Ejemplo n.º 1
0
        public HabitatField Translate(HabitatField input)
        {
            var polygon      = input.Geometry as IPolygon;
            var movedPolygon = new Polygon(
                Translate(polygon.Shell),
                polygon.Holes.Select(c => Translate((ILinearRing)c)).ToArray()
                );

            return(new HabitatField()
            {
                Geometry = movedPolygon,
                Type = input.Type
            });
        }
Ejemplo n.º 2
0
        public static void CreateDebugHabitatField(HabitatField field, float positionMultiplier = 1000,
                                                   GameObject parentGameObject = null)
        {
            var polys = MyNetTopologySuiteUtils.ToSinglePolygons(field.Geometry);

            if (polys.Count == 1)
            {
                var poly         = polys[0];
                var exteriorRing = poly.ExteriorRing.Coordinates.Select(i => MyNetTopologySuiteUtils.ToVector2(i))
                                   .ToList();

                var rootObject = CreateRingGameObject(exteriorRing, positionMultiplier);
                if (parentGameObject != null)
                {
                    rootObject.transform.SetParent(parentGameObject.transform);
                }
                rootObject.name = field.Type.ToString();


                foreach (var interiorRing in poly.Holes)
                {
                    var ring
                        = interiorRing.Coordinates.Select(i => MyNetTopologySuiteUtils.ToVector2(i)).ToList();
                    var ringObject = CreateRingGameObject(ring, positionMultiplier);
                    ringObject.transform.SetParent(rootObject.transform);
                }
            }
            else
            {
                foreach (var habitatField in polys.Select(poly => new HabitatField()
                {
                    Geometry = poly,
                    Type = field.Type
                }))
                {
                    CreateDebugHabitatField(habitatField, positionMultiplier, parentGameObject);
                }
            }
        }