diff --git a/SuperTiled2Unity/Assets/SuperTiled2Unity/Scripts/Editor/Importers/TmxAssetImporter.cs b/SuperTiled2Unity/Assets/SuperTiled2Unity/Scripts/Editor/Importers/TmxAssetImporter.cs index 0abc240f..a4521e53 100644 --- a/SuperTiled2Unity/Assets/SuperTiled2Unity/Scripts/Editor/Importers/TmxAssetImporter.cs +++ b/SuperTiled2Unity/Assets/SuperTiled2Unity/Scripts/Editor/Importers/TmxAssetImporter.cs @@ -26,6 +26,8 @@ public partial class TmxAssetImporter : TiledAssetImporter private Dictionary m_TilePolygonDatabase; private int m_NextTileAsObjectId; + private Dictionary m_ObjectsById; + [SerializeField] private bool m_TilesAsObjects = false; public bool TilesAsObjects { get { return m_TilesAsObjects; } } @@ -44,6 +46,17 @@ public partial class TmxAssetImporter : TiledAssetImporter [SerializeField] private List m_InternalTilesets; + /// + /// Returns the game object corresponding to a Tiled object ID. + /// If no such object could be found, returns null. + /// + public GameObject GetObject(int targetId) + { + return m_ObjectsById.TryGetValue(targetId, out var go) + ? go + : null; + } + protected override void InternalOnImportAsset() { base.InternalOnImportAsset(); @@ -395,7 +408,7 @@ private void DoPrefabReplacements() { // Should any of our objects (from Tiled) be replaced by instantiated prefabs? var supers = m_MapComponent.GetComponentsInChildren(); - var objectsById = supers.ToDictionary(so => so.m_Id, so => so.gameObject); + m_ObjectsById = supers.ToDictionary(so => so.m_Id, so => so.gameObject); var goToDestroy = new List(); foreach (var so in supers) @@ -414,7 +427,7 @@ private void DoPrefabReplacements() // Update bookkeeping for later custom property replacement. goToDestroy.Add(so.gameObject); - objectsById[so.m_Id] = instance; + m_ObjectsById[so.m_Id] = instance; } } @@ -428,7 +441,7 @@ private void DoPrefabReplacements() { foreach (var p in props.m_Properties) { - objectsById[so.m_Id].BroadcastProperty(p, objectsById); + m_ObjectsById[so.m_Id].BroadcastProperty(p, m_ObjectsById); } } }