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 }); }
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); } } }