From 5b057c10a86a7e3796b6cce22cce3bb5067a66d5 Mon Sep 17 00:00:00 2001 From: RDPolarity Date: Tue, 21 Oct 2025 15:16:16 +1100 Subject: [PATCH] feat: `LDtkDefiniationObjectTileset` now references the relevant tile set artifact --- .../LDtkDefinitionObjectTileset.cs | 6 ++++- .../LDtkDefinitionObjectsCache.cs | 24 ++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Assets/LDtkUnity/Runtime/Data/Extensions/Definition/ScriptableObjects/LDtkDefinitionObjectTileset.cs b/Assets/LDtkUnity/Runtime/Data/Extensions/Definition/ScriptableObjects/LDtkDefinitionObjectTileset.cs index 596767aa..ffa3dc6b 100644 --- a/Assets/LDtkUnity/Runtime/Data/Extensions/Definition/ScriptableObjects/LDtkDefinitionObjectTileset.cs +++ b/Assets/LDtkUnity/Runtime/Data/Extensions/Definition/ScriptableObjects/LDtkDefinitionObjectTileset.cs @@ -9,6 +9,9 @@ public sealed class LDtkDefinitionObjectTileset : LDtkDefinitionObject> _allSprites; + private Dictionary _tilesetArtifacts; internal LDtkDefinitionObjectsCache(LDtkDebugInstance logger) { @@ -69,9 +70,15 @@ public void InitializeFromLevel(List defs, Dictionary tilesets) { - _allSprites = new Dictionary>(tilesets.Count); + tilesets ??= new Dictionary(); + + _tilesetArtifacts = new Dictionary(tilesets.Count); + _allSprites = new Dictionary>(tilesets.Count); + foreach (var pair in tilesets) { + _tilesetArtifacts[pair.Key] = pair.Value; + Dictionary dict; if (pair.Value != null) { @@ -83,6 +90,7 @@ private void InitializeTilesets(Dictionary tiles { dict = new Dictionary(); } + _allSprites.Add(pair.Key, dict); } } @@ -212,7 +220,7 @@ public T GetObject(int uid) where T : ScriptableObject _logger.LogError($"Failed to get a \"{typeof(T).Name}\" of uid {uid} due to a type mismatch with {obj.GetType().Name}"); return null; } - + /// /// Could return null sprite if the tile would only have clear pixels. /// @@ -252,6 +260,16 @@ public Sprite GetSpriteForTilesetRectangle(TilesetRectangle rectangle) return sprite; } + + internal LDtkArtifactAssetsTileset GetTilesetArtifacts(int uid) + { + if (_tilesetArtifacts != null && _tilesetArtifacts.TryGetValue(uid, out var artifacts)) + { + return artifacts; + } + + return null; + } private void CacheDictToListViaProject() { @@ -274,4 +292,4 @@ private void CacheListToDictViaLevel() } } } -} \ No newline at end of file +}