Aura.Channel.World.DynamicRegion.CreateVariation C# (CSharp) Метод

CreateVariation() приватный статический Метод

Creates variation of given region info.
private static CreateVariation ( RegionInfoData baseRegionInfoData, int newRegionId, string variationFile ) : RegionInfoData
baseRegionInfoData RegionInfoData
newRegionId int
variationFile string
Результат RegionInfoData
		private static RegionInfoData CreateVariation(RegionInfoData baseRegionInfoData, int newRegionId, string variationFile)
		{
			var result = new RegionInfoData();
			result.Id = newRegionId;
			result.GroupId = baseRegionInfoData.GroupId;
			result.X1 = baseRegionInfoData.X1;
			result.Y1 = baseRegionInfoData.Y1;
			result.X2 = baseRegionInfoData.X2;
			result.Y2 = baseRegionInfoData.Y2;

			// TODO: Filter areas, props, and events to create, based on variation file.

			result.Areas = new List<AreaData>(baseRegionInfoData.Areas.Count);
			var i = 1;
			foreach (var originalArea in baseRegionInfoData.Areas)
			{
				var area = originalArea.Copy(false, false);
				area.Id = i++;

				// Add props
				foreach (var originalProp in originalArea.Props.Values)
				{
					var prop = originalProp.Copy();

					var id = (ulong)prop.EntityId;
					id &= ~0x0000FFFFFFFF0000U;
					id |= ((ulong)result.Id << 32);
					id |= ((ulong)baseRegionInfoData.GetAreaIndex(originalArea.Id) << 16);

					prop.EntityId = (long)id;

					area.Props.Add(prop.EntityId, prop);
				}

				// Add events
				foreach (var originalEvent in originalArea.Events.Values)
				{
					var ev = originalEvent.Copy();
					ev.RegionId = result.Id;

					var id = (ulong)ev.Id;
					id &= ~0x0000FFFFFFFF0000U;
					id |= ((ulong)result.Id << 32);
					id |= ((ulong)baseRegionInfoData.GetAreaIndex(originalArea.Id) << 16);

					ev.Id = (long)id;

					area.Events.Add(ev.Id, ev);
				}

				result.Areas.Add(area);
			}

			return result;
		}