From b36950d12e74465f727a065d7e014ad354f1496a Mon Sep 17 00:00:00 2001 From: Peter Ruibal Date: Mon, 6 Apr 2026 01:12:21 -0700 Subject: [PATCH 1/2] Track Tiled object type on collider components Exposes collision.m_ObjectType on SuperColliderComponent so game code can identify what Tiled type a collider originated from. --- .../Extensions/CollisionObjectExtensions.cs | 16 ++++++++++++---- .../Runtime/SuperColliderComponent.cs | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs b/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs index fbb04c2e..64786de9 100644 --- a/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs +++ b/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs @@ -55,6 +55,10 @@ private static void AddPolygonCollider(GameObject go, CollisionObject collision, var convexPolygons = composition.Compose(triangles); PolygonUtils.AddCompositePolygonCollider(go, convexPolygons, importContext); + foreach (var superCollider in go.GetComponentsInChildren()) + { + superCollider.m_ObjectType = collision.m_ObjectType; + } } private static void AddEdgeCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) @@ -62,7 +66,8 @@ private static void AddEdgeCollider(GameObject go, CollisionObject collision, Su var edge = go.AddComponent(); edge.points = importContext.MakePointsPPU(collision.Points); - go.AddComponent(); + var superCollider = go.AddComponent(); + superCollider.m_ObjectType = collision.m_ObjectType; } private static void AddEllipseCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) @@ -79,7 +84,8 @@ private static void AddEllipseCollider(GameObject go, CollisionObject collision, go.transform.localPosition = new Vector3(xpos, ypos); go.transform.localEulerAngles = new Vector3(0, 0, importContext.MakeRotation(collision.m_Rotation)); - go.AddComponent(); + var superCollider = go.AddComponent(); + superCollider.m_ObjectType = collision.m_ObjectType; } else { @@ -99,7 +105,8 @@ private static void AddBoxCollider(GameObject go, CollisionObject collision, Sup go.transform.localPosition = new Vector3(xpos, ypos); go.transform.localEulerAngles = new Vector3(0, 0, importContext.MakeRotation(collision.m_Rotation)); - go.AddComponent(); + var superCollider = go.AddComponent(); + superCollider.m_ObjectType = collision.m_ObjectType; } private static void AddPointCollider(GameObject go, CollisionObject collision, SuperImportContext importContext) @@ -110,7 +117,8 @@ private static void AddPointCollider(GameObject go, CollisionObject collision, S go.transform.localPosition = new Vector3(xpos, ypos); go.transform.localEulerAngles = new Vector3(0, 0, importContext.MakeRotation(collision.m_Rotation)); - go.AddComponent(); + var superCollider = go.AddComponent(); + superCollider.m_ObjectType = collision.m_ObjectType; } } } diff --git a/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Runtime/SuperColliderComponent.cs b/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Runtime/SuperColliderComponent.cs index c73ab6c3..3f11095c 100644 --- a/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Runtime/SuperColliderComponent.cs +++ b/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Runtime/SuperColliderComponent.cs @@ -19,6 +19,8 @@ public class Shape public List m_PolygonShapes = new List(); public List m_OutlineShapes = new List(); + public string m_ObjectType; + #if UNITY_EDITOR public void AddPolygonShape(IEnumerable points) { From 178d31569124c4fad3ff349cee064d6596f1343d Mon Sep 17 00:00:00 2001 From: Peter Ruibal Date: Tue, 7 Apr 2026 15:07:06 -0700 Subject: [PATCH 2/2] Add custom properties to collision game objects Attach SuperCustomProperties to each collider GO, merging properties from the collision object, parent tile, and object type. --- .../Extensions/CollisionObjectExtensions.cs | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs b/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs index 64786de9..8cdc82b2 100644 --- a/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs +++ b/SuperTiled2Unity/Packages/com.seanba.super-tiled2unity/Editor/Extensions/CollisionObjectExtensions.cs @@ -1,5 +1,6 @@ using UnityEngine; using SuperTiled2Unity.Editor.Geometry; +using System.Linq; namespace SuperTiled2Unity.Editor { @@ -27,7 +28,7 @@ public static void AddCollider(this CollisionObject collision, SuperTile tile, G } else if (collision.CollisionShapeType == CollisionShapeType.Point) { - AddPointCollider(go, collision, importContext); + AddPointCollider(go, collision, tile, importContext); } // Additional settings on the collider that was just added @@ -59,6 +60,7 @@ private static void AddPolygonCollider(GameObject go, CollisionObject collision, { superCollider.m_ObjectType = collision.m_ObjectType; } + AddSuperCustomProperties(go, collision, tile, importContext); } private static void AddEdgeCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) @@ -68,6 +70,7 @@ private static void AddEdgeCollider(GameObject go, CollisionObject collision, Su var superCollider = go.AddComponent(); superCollider.m_ObjectType = collision.m_ObjectType; + AddSuperCustomProperties(go, collision, tile, importContext); } private static void AddEllipseCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) @@ -86,6 +89,7 @@ private static void AddEllipseCollider(GameObject go, CollisionObject collision, var superCollider = go.AddComponent(); superCollider.m_ObjectType = collision.m_ObjectType; + AddSuperCustomProperties(go, collision, tile, importContext); } else { @@ -107,9 +111,10 @@ private static void AddBoxCollider(GameObject go, CollisionObject collision, Sup var superCollider = go.AddComponent(); superCollider.m_ObjectType = collision.m_ObjectType; + AddSuperCustomProperties(go, collision, tile, importContext); } - private static void AddPointCollider(GameObject go, CollisionObject collision, SuperImportContext importContext) + private static void AddPointCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) { var xpos = importContext.MakeScalar(collision.m_Position.x); var ypos = importContext.MakeScalar(collision.m_Position.y); @@ -119,6 +124,22 @@ private static void AddPointCollider(GameObject go, CollisionObject collision, S var superCollider = go.AddComponent(); superCollider.m_ObjectType = collision.m_ObjectType; + AddSuperCustomProperties(go, collision, tile, importContext); + } + + private static void AddSuperCustomProperties(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) + { + var properties = collision.m_CustomProperties.ToList(); + + if (tile != null) + { + properties.CombineFromSource(tile.m_CustomProperties); + } + + properties.AddPropertiesFromType(collision.m_ObjectType, importContext); + + var component = go.AddComponent(); + component.m_Properties = properties.OrderBy(p => p.m_Name).ToList(); } } }