private static void AddEdgeCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext)
        {
            var edge = go.AddComponent <EdgeCollider2D>();

            edge.points = importContext.MakePoints(collision.Points);

            float height = importContext.MakeScalar(tile.m_Height);

            go.transform.localPosition = new Vector3(0, height, 0);

            go.AddComponent <SuperColliderComponent>();
        }
        private void CollectTilePolygons()
        {
            if (!m_Tile.m_CollisionObjects.IsEmpty())
            {
                foreach (var collision in m_Tile.m_CollisionObjects)
                {
                    var tilePoly = new TilePolygon();
                    tilePoly.IsClosed        = collision.IsClosed;
                    tilePoly.ColliderLayerId = LayerMask.NameToLayer(collision.m_PhysicsLayer);
                    tilePoly.IsTrigger       = collision.m_IsTrigger;

                    var points = m_ImportContext.MakePoints(collision.Points);
                    points          = points.Select(pt => (Vector2)m_Transform.MultiplyPoint(pt)).ToArray();
                    tilePoly.Points = points;

                    m_Polygons.Add(tilePoly);
                }
            }
        }
        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);
        }