public LineOfSightAreaDisplay3D(ZoneLineOfSightAreas zoneAreas)
        {
            _zoneAreas = zoneAreas;

            foreach (var area in _zoneAreas.Areas)
            {
                area.Vertices.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Vertices_CollectionChanged);
            }
            _zoneAreas.Areas.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Areas_CollectionChanged);

            if (_zoneAreas.Areas.Count > 0)
            {
                ShowArea(_zoneAreas.Areas.First());
            }
        }
        public static ZoneLineOfSightAreas LoadFileBinary(string file)
        {
            ZoneLineOfSightAreas zone = new ZoneLineOfSightAreas();

            FileStream fs = new FileStream(file.ToLower(), FileMode.Open);

            Stream s = fs;
            var header = zone.ReadHeader(ref s);

            for (int i = 0; i < header.polygonCount; i++)
            {
                var area = LineOfSightArea.LoadFromStream(ref s);
                zone.Areas.Add(area);
            }

            /*
            foreach (var area in zone.Areas)
            {
                if (area.Vertices.First().X != area.Vertices.Last().X && area.Vertices.First().Y != area.Vertices.Last().Y)
                {
                    Point3D p = new Point3D(area.Vertices.First().X, area.Vertices.First().Y, 0);
                    area.Vertices.Add(p);
                }
            }*/

            fs.Close();

            return zone;
        }