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.ColliderLayerName = collision.m_PhysicsLayer; tilePoly.ColliderLayerId = LayerMask.NameToLayer(collision.m_PhysicsLayer); tilePoly.IsTrigger = collision.m_IsTrigger; var points = m_ImportContext.MakePointsPPU(collision.Points); points = points.Select(pt => (Vector2)m_Transform.MultiplyPoint(pt)).ToArray(); // Make sure the polygon points order is still CCW. Otherwise clipper may subtract polygons from each other. if (PolygonUtils.SumOverEdges(points) < 0) { points = points.Reverse().ToArray(); } tilePoly.Points = points; m_Polygons.Add(tilePoly); } } }
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); } } }