private static void AddPolygonCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) { // Note that polygons may need to be decomposed into convex parts var points = importContext.MakePointsPPU(collision.Points); // Triangulate the polygon points var triangulator = new Triangulator(); var triangles = triangulator.TriangulatePolygon(points); // Gather triangles into a collection of convex polygons var composition = new ComposeConvexPolygons(); var convexPolygons = composition.Compose(triangles); PolygonUtils.AddCompositePolygonCollider(go, convexPolygons); }
private void ProcessPolygonElement(GameObject goObject, XElement xPolygon) { // Get the points of the polygon so we can decompose into a collection of convex polygons var points = xPolygon.GetAttributeAsVector2Array("points"); points = points.Select(p => ColliderFactory.TransformPoint(p)).ToArray(); points = Importer.SuperImportContext.MakePoints(points); // Triangulate the polygon points var triangulator = new Triangulator(); var triangles = triangulator.TriangulatePolygon(points); // Gather triangles into a collection of convex polygons var composition = new ComposeConvexPolygons(); var convexPolygons = composition.Compose(triangles); PolygonUtils.AddCompositePolygonCollider(goObject, convexPolygons); }
private static void AddPolygonCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) { // Note that polygons may need to be decomposed into convex parts var points = importContext.MakePoints(collision.Points); // Triangulate the polygon points var triangulator = new Triangulator(); var triangles = triangulator.TriangulatePolygon(points); // Gather triangles into a collection of convex polygons var composition = new ComposeConvexPolygons(); var convexPolygons = composition.Compose(triangles); PolygonUtils.AddCompositePolygonCollider(go, convexPolygons); // Position is from top-left corner float height = importContext.MakeScalar(tile.m_Height); go.transform.localPosition = new Vector3(0, height, 0); }