示例#1
0
 internal void OnDeserializingMethod(StreamingContext context)
 {
     All.Clear();
     LowerLayers.Clear();
     MiddleLayers.Clear();
     UpperLayers.Clear();
 }
示例#2
0
        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.");
            }
        }
示例#3
0
        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);
        }