public DynamicRegion(int baseRegionId, string variationFile = "", RegionMode mode = RegionMode.RemoveWhenEmpty)
: base(baseRegionId)
{
this.BaseId = baseRegionId;
var baseRegionInfoData = AuraData.RegionInfoDb.Find(this.BaseId);
if (baseRegionInfoData == null)
throw new Exception("DynamicRegion: No region info data found for '" + this.BaseId + "'.");
var baseRegionData = AuraData.RegionDb.Find(this.BaseId);
if (baseRegionData == null)
throw new Exception("DynamicRegion: No region data found for '" + this.BaseId + "'.");
var baseRegion = ChannelServer.Instance.World.GetRegion(baseRegionId);
if (baseRegion != null)
this.Properties.Load(baseRegion.Properties.GetList());
this.BaseName = baseRegionInfoData.Name;
this.Id = ChannelServer.Instance.World.DynamicRegions.GetFreeDynamicRegionId();
this.Name = "DynamicRegion" + this.Id;
this.Variation = variationFile;
this.Mode = mode;
this.IsIndoor = baseRegionData.Indoor;
this.Data = CreateVariation(baseRegionInfoData, this.Id, variationFile);
this.InitializeFromData();
ChannelServer.Instance.World.DynamicRegions.Add(this);
}