diff --git a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs index 3c77c4178..1f5a18e67 100644 --- a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs +++ b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs @@ -191,11 +191,22 @@ public Sprite GetAdditionalSprite(LDtkProjectImporter project, TilesetDefinition return null; } - Sprite sprite = artifacts.GetAdditionalSpriteForRectSlow(id, def.PxHei); + Sprite sprite = null; + + Profiler.BeginSample("GetAdditionalSpriteForRectByNameCheck"); + sprite = artifacts.GetAdditionalSpriteForRectByName(id, def.PxHei); + Profiler.EndSample(); if (sprite) { return sprite; } + /*Profiler.BeginSample("GetAdditionalSpriteForRect"); + sprite = artifacts.GetAdditionalSpriteForRect(id, def); + Profiler.EndSample(); + if (sprite) + { + return sprite; + }*/ Logger.LogError($"Failed to load an additional sprite at id \"{id}\" from \"{def.Identifier}\""); return null; diff --git a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkTilesetImporter.cs b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkTilesetImporter.cs index 857455d7c..c10bf0b98 100644 --- a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkTilesetImporter.cs +++ b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkTilesetImporter.cs @@ -39,7 +39,7 @@ internal sealed partial class LDtkTilesetImporter : LDtkJsonImporter - [SerializeField] internal List _additionalTiles = new List(); + private List _additionalTiles = new List(); [SerializeField] internal SecondarySpriteTexture[] _secondaryTextures; private Texture2D _cachedTex; @@ -128,21 +128,17 @@ protected override void Import() var rects = ReadSourceRectsFromJsonDefinition(_definition.Def); Profiler.EndSample(); - bool changedMetaData = false; - Profiler.BeginSample("ReformatRectMetaData"); - changedMetaData |= ReformatRectMetaData(rects); + if (ReformatRectMetaData(rects)) + { + EditorUtility.SetDirty(this); + } Profiler.EndSample(); Profiler.BeginSample("ReformatAdditionalTiles"); - changedMetaData |= ReformatAdditionalTiles(); + ReformatAdditionalTiles(); Profiler.EndSample(); - if (changedMetaData) - { - EditorUtility.SetDirty(this); - } - Profiler.BeginSample("PrepareGenerate"); TextureGenerationOutput output = PrepareGenerate(platformSettings); Profiler.EndSample(); @@ -276,63 +272,50 @@ public static bool IsShapeSetForGrid(List shape) shape.Any(p => p == GridCheck4); } - private bool ReformatAdditionalTiles() + private void ReformatAdditionalTiles() { - var srcRects = _definition.Rects; - bool changed = false; + Debug.Assert(_definition != null); + //Debug.Assert(); - //if no tiles were populated (can be null) - if (srcRects.IsNullOrEmpty()) + var additionalRects = _definition.Rects; + if (additionalRects.IsNullOrEmpty()) { - changed = _additionalTiles.Any(); - _additionalTiles.Clear(); - return changed; + return; } - if (_additionalTiles.Count > srcRects.Count) + _additionalTiles.Clear(); + for (int i = _additionalTiles.Count; i < additionalRects.Count; i++) { - _additionalTiles.RemoveRange(srcRects.Count, _additionalTiles.Count - srcRects.Count); - changed = true; - } - - if (_additionalTiles.Count < srcRects.Count) - { - for (int i = _additionalTiles.Count; i < srcRects.Count; i++) + var rect = _definition.Rects[i].ToRect(); + rect = LDtkCoordConverter.ImageSlice(rect, _definition.Def.PxHei); + LDtkSpriteRect newRect = new LDtkSpriteRect { - var rect = _definition.Rects[i].ToRect(); - rect = LDtkCoordConverter.ImageSlice(rect, _definition.Def.PxHei); - LDtkSpriteRect newRect = new LDtkSpriteRect - { - border = Vector4.zero, - pivot = new Vector2(0.5f, 0.5f), - alignment = SpriteAlignment.Center, - rect = rect, - spriteID = GUID.Generate(), - name = MakeAssetName() - }; - _additionalTiles.Add(newRect); - - string MakeAssetName() - { - StringBuilder sb = new StringBuilder(); - sb.Append(_definition.Def.Identifier); - sb.Append('_'); - sb.Append(rect.x); - sb.Append('_'); - sb.Append(rect.y); - sb.Append('_'); - sb.Append(rect.width); - sb.Append('_'); - sb.Append(rect.height); - return sb.ToString(); - } + border = Vector4.zero, + pivot = new Vector2(0.5f, 0.5f), + alignment = SpriteAlignment.Center, + rect = rect, + spriteID = GUID.Generate(), + name = MakeAssetName() + }; + _additionalTiles.Add(newRect); + + string MakeAssetName() + { + StringBuilder sb = new StringBuilder(); + sb.Append(_definition.Def.Identifier); + sb.Append('_'); + sb.Append(rect.x); + sb.Append('_'); + sb.Append(rect.y); + sb.Append('_'); + sb.Append(rect.width); + sb.Append('_'); + sb.Append(rect.height); + return sb.ToString(); } - changed = true; } - Debug.Assert(_additionalTiles.Count == srcRects.Count); - - return changed; + Debug.Assert(_additionalTiles.Count == additionalRects.Count); } private static void RefreshSceneTilemapColliders() diff --git a/Assets/LDtkUnity/Runtime/Tools/LDtkCoordConverter.cs b/Assets/LDtkUnity/Runtime/Tools/LDtkCoordConverter.cs index b9ce76ead..695de0624 100644 --- a/Assets/LDtkUnity/Runtime/Tools/LDtkCoordConverter.cs +++ b/Assets/LDtkUnity/Runtime/Tools/LDtkCoordConverter.cs @@ -26,6 +26,43 @@ public static Vector2Int IntGridValueCsvCoord(int csvIndex, Vector2Int cellSize) LDtkDebug.LogError("Failed to get CSV coord"); return Vector2Int.zero; } + + //this is slow. find a way to speed it up? + public static int TilesetSliceIndex(Rect rect, TilesetDefinition def) + { + int gridSize = def.TileGridSize; + + int rectX = (int)rect.x; + int rectY = (int)rect.y; + int rectW = (int)rect.width; + int rectH = (int)rect.height; + + if (rectW != rectH) + { + return -1; + } + + //dont need to check height because of above + if (rectW != gridSize) + { + return -1; + } + + int i = 0; + for (int y = 0; y < def.PxWid; y += def.TileGridSize) + { + for (int x = 0; x < def.PxHei; x += def.TileGridSize) + { + if (rectX == x && rectY == y) + { + return i; + } + i++; + } + } + + return -1; + } public static Vector2Int ConvertCell(Vector2Int cellPos, int verticalCellCount) { diff --git a/Assets/LDtkUnity/Runtime/Tools/LDtkExtensionMethods.cs b/Assets/LDtkUnity/Runtime/Tools/LDtkExtensionMethods.cs index 14a9b4249..8b89546c9 100644 --- a/Assets/LDtkUnity/Runtime/Tools/LDtkExtensionMethods.cs +++ b/Assets/LDtkUnity/Runtime/Tools/LDtkExtensionMethods.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Profiling; using UnityEngine.Tilemaps; @@ -77,6 +78,11 @@ internal static GameObject CreateChildGameObject(this GameObject parent, string return child; } + internal static bool IsInteger(this float value) + { + return Math.Abs(value - Mathf.Floor(value)) < 0.0001f; + } + internal static Rect ToRect(this RectInt rect) { return new Rect(rect.x, rect.y, rect.width, rect.height); diff --git a/Assets/LDtkUnity/Runtime/UnityAssets/Assets/LDtkArtifactAssetsTileset.cs b/Assets/LDtkUnity/Runtime/UnityAssets/Assets/LDtkArtifactAssetsTileset.cs index 9edf94f03..08e33c010 100644 --- a/Assets/LDtkUnity/Runtime/UnityAssets/Assets/LDtkArtifactAssetsTileset.cs +++ b/Assets/LDtkUnity/Runtime/UnityAssets/Assets/LDtkArtifactAssetsTileset.cs @@ -38,9 +38,23 @@ internal Dictionary AdditionalSpritesToDict() return _additionalSprites.ToDictionary(sprite => sprite.rect); } - internal Sprite GetAdditionalSpriteForRectSlow(Rect rect, int pxHei) + internal Sprite GetAdditionalSpriteForRect(Rect rect, TilesetDefinition def) { - return _additionalSprites.FirstOrDefault(p => p.rect == LDtkCoordConverter.ImageSlice(rect, pxHei)); + Debug.Log($""); + Debug.Log($"trying slice index {rect}"); + int i = LDtkCoordConverter.TilesetSliceIndex(rect, def); + if (i == -1) + { + return null; + } + + Debug.Log($"Getting a perfect sprite at {i}!"); + return _sprites[i]; + } + + internal Sprite GetAdditionalSpriteForRectByName(Rect rect, int textureHeight) + { + return _additionalSprites.FirstOrDefault(p => p.rect == LDtkCoordConverter.ImageSlice(rect, textureHeight)); } } } \ No newline at end of file diff --git a/Assets/Tests/Misc/OtherTechTests/TestAllFields.ldtk b/Assets/Tests/Misc/OtherTechTests/TestAllFields.ldtk index e35a90c5f..085b88fcd 100644 --- a/Assets/Tests/Misc/OtherTechTests/TestAllFields.ldtk +++ b/Assets/Tests/Misc/OtherTechTests/TestAllFields.ldtk @@ -5,12 +5,12 @@ "doc": "https://ldtk.io/json", "schema": "https://ldtk.io/files/JSON_SCHEMA.json", "appAuthor": "Sebastien 'deepnight' Benard", - "appVersion": "1.3.3", + "appVersion": "1.3.4", "url": "https://ldtk.io" }, "iid": "b9e82600-7820-11ed-84e8-358ab86c3437", - "jsonVersion": "1.3.3", - "appBuildId": 467698, + "jsonVersion": "1.3.4", + "appBuildId": 470178, "nextUid": 169, "identifierStyle": "Capitalize", "toc": [], @@ -22,6 +22,8 @@ "defaultPivotX": 0, "defaultPivotY": 0, "defaultGridSize": 8, + "defaultEntityWidth": 16, + "defaultEntityHeight": 16, "bgColor": "#1D2135", "defaultLevelBgColor": "#1D2135", "minifyJson": false, @@ -36,7 +38,7 @@ "backupRelPath": null, "levelNamePattern": "%world_Level_%idx", "tutorialDesc": null, - "customCommands": [], + "customCommands": [{ "command": "../../../../Library/LDtkTilesetExporter/ExportTilesetDefinition.exe", "when": "AfterSave" }], "flags": [ "PrependIndexToLevelFileNames", "UseMultilinesType" ], "defs": { "layers": [ { @@ -176,6 +178,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -210,6 +213,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -244,6 +248,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -278,6 +283,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -312,6 +318,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -346,6 +353,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -380,6 +388,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -414,6 +423,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -448,6 +458,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -482,6 +493,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -516,6 +528,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -550,6 +563,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -584,6 +598,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -618,6 +633,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -652,6 +668,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -686,6 +703,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -720,6 +738,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -754,6 +773,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -788,6 +808,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -822,6 +843,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -856,6 +878,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -890,6 +913,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -991,6 +1015,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1025,6 +1050,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1059,6 +1085,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1096,6 +1123,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1130,6 +1158,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1164,6 +1193,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1198,6 +1228,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1232,6 +1263,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1266,6 +1298,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1300,6 +1333,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1334,6 +1368,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1368,6 +1403,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1402,6 +1438,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1436,6 +1473,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1473,6 +1511,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1507,6 +1546,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1541,6 +1581,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1575,6 +1616,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1609,6 +1651,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1643,6 +1686,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1677,6 +1721,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1711,6 +1756,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1819,6 +1865,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1856,6 +1903,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1893,6 +1941,7 @@ "editorDisplayScale": 1, "editorDisplayPos": "Above", "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, "editorAlwaysShow": false, "editorShowInWorld": true, "editorCutLongValues": true, @@ -1990,6 +2039,8 @@ "__tags": [], "__tile": null, "__smartColor": "#298DAB", + "__worldX": 24, + "__worldY": 24, "iid": "cf438e61-66b0-11ec-ad88-3754da9b6bef", "width": 16, "height": 16, @@ -2148,6 +2199,8 @@ "__tags": [], "__tile": null, "__smartColor": "#94D9B3", + "__worldX": 120, + "__worldY": 24, "iid": "cf43b570-66b0-11ec-ad88-af5fe9f1bd49", "width": 16, "height": 16, @@ -2162,6 +2215,8 @@ "__tags": [], "__tile": null, "__smartColor": "#000000", + "__worldX": 88, + "__worldY": 24, "iid": "cf43dc80-66b0-11ec-ad88-697b5103d010", "width": 16, "height": 16, @@ -2205,6 +2260,8 @@ "__tags": [], "__tile": null, "__smartColor": "#000000", + "__worldX": 56, + "__worldY": 24, "iid": "7ebdade0-8dc0-11ec-8e7d-a16133833919", "width": 16, "height": 16,