internal void OnDeserializingMethod(StreamingContext context) { All.Clear(); LowerLayers.Clear(); MiddleLayers.Clear(); UpperLayers.Clear(); }
public void Validate() { LowerLayers = new List <string>(LowerLayers.Distinct()); MiddleLayers = new List <string>(MiddleLayers.Distinct()); UpperLayers = new List <string>(UpperLayers.Distinct()); var reservedLayers = new string[] { Attributes, Npcs, Lights, Events }; All.Clear(); All.AddRange(LowerLayers); All.AddRange(MiddleLayers); All.AddRange(UpperLayers); if (All.Count() == 0) { //Must have at least 1 map layer! throw new Exception("Config Error: You must have at least 1 map layer configured! Please update your server config."); } foreach (var reserved in reservedLayers) { if (All.Contains(reserved)) { throw new Exception($"Config Error: Layer '{reserved}' is reserved for editor use. Please choose different naming for map layers in your server config."); } } if (All.Count != All.Distinct().Count()) { //Duplicate layers! throw new Exception("Config Error: Duplicate map layers detected! Map layers must be unique in name. Please update your server config."); } }
private void DrawOilBody() { if (!UpperLayers.Any() || !LowerLayers.Any()) { throw new ArgumentException(); } var x = UpperLayers.FirstOrDefault().X; var y = UpperLayers.FirstOrDefault().Y; var upperZ = new List <double>(); var lowerZ = new List <double>(); // assuming that all layers have the same x, y for (var i = 0; i < UpperLayers.FirstOrDefault().Z.Length; i++) { var upperMin = UpperLayers.Select(l => l.Z[i]).Min(); var lowerMax = LowerLayers.Select(l => l.Z[i]).Max(); upperZ.Add(lowerMax > upperMin ? lowerMax : upperMin); lowerZ.Add(lowerMax); } var oilBody = new BodyModel { X = x, Y = y, UpperZ = upperZ.ToArray(), LowerZ = lowerZ.ToArray() }; _requestBodyDrawEvent.Publish(oilBody); }