From 393f83cdafdf6b0d3e2925f7e7ad74814babe402 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 17 Aug 2023 02:53:59 -0700 Subject: [PATCH] made the error/warning import ui available to unity versions older than 2022.2. saves data in the library folder --- .../Importer/LDtkImporterEditor.cs | 65 ++++++++- .../Importer/LDtkLevelImporterEditor.cs | 1 + .../Importer/LDtkProjectImporterEditor.cs | 2 + .../Importer/LDtkTilesetImporterEditor.cs | 2 + .../ScriptedImporter/LDtkJsonImporter.cs | 17 ++- .../ScriptedImporter/LDtkProjectImporter.cs | 1 - Assets/LDtkUnity/Runtime/Tools/LDtkDebug.cs | 5 + .../Runtime/Tools/LDtkDebugInstance.cs | 127 +++++++++++++++++- .../TestAllFieldsAtlas.spriteatlas | 42 +++--- 9 files changed, 233 insertions(+), 29 deletions(-) diff --git a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkImporterEditor.cs b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkImporterEditor.cs index 045f08d6c..e9aa3666f 100644 --- a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkImporterEditor.cs +++ b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkImporterEditor.cs @@ -1,4 +1,6 @@ -using UnityEditor; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; using UnityEngine; #if UNITY_2020_2_OR_NEWER @@ -16,6 +18,9 @@ internal abstract class LDtkImporterEditor : ScriptedImporterEditor protected override bool useAssetDrawPreview => false; //protected override bool ShouldHideOpenButton() => false; + protected LDtkJsonImporter Importer; + protected ImportLogEntries Entries; + protected LDtkSectionDependencies SectionDependencies; private SerializedProperty _reimportOnDependencyChangedProp; private readonly GUIContent _reimportOnDependencyChanged = new GUIContent @@ -32,6 +37,13 @@ public override void OnEnable() SectionDependencies = new LDtkSectionDependencies(this, serializedObject); _reimportOnDependencyChangedProp = serializedObject.FindProperty(LDtkJsonImporter.REIMPORT_ON_DEPENDENCY_CHANGE); SectionDependencies.Init(); + + Importer = target as LDtkJsonImporter; + +#if !UNITY_2022_2_OR_NEWER + Entries = new ImportLogEntries(Importer.assetPath); + Entries.ReadTheEntries(); +#endif } protected override void Apply() @@ -88,5 +100,56 @@ public void DrawDependenciesProperty() { EditorGUILayout.PropertyField(_reimportOnDependencyChangedProp, _reimportOnDependencyChanged); } + + public void DrawLogEntries() + { + if (Entries == null) + { + return; + } + + List entries = Entries._entries; + + if (entries.IsNullOrEmpty()) + { + return; + } + + ImportLogEntry[] errors = entries.Where(p => p._flag == ImportLogFlags.Error).ToArray(); + ImportLogEntry[] warnings = entries.Where(p => p._flag == ImportLogFlags.Warning).ToArray(); + + MessageType msgType = errors.IsNullOrEmpty() ? MessageType.Warning : MessageType.Error; + + string msg; + if (!errors.IsNullOrEmpty() && !warnings.IsNullOrEmpty()) + { + msg = $"Last import generated {errors.Length} errors / {warnings.Length} warnings."; + } + else if (!errors.IsNullOrEmpty()) + { + msg = $"Last import generated {errors.Length} errors"; + } + else + { + msg = $"Last import generated {warnings.Length} warnings"; + } + + Rect rect = EditorGUILayout.GetControlRect(false, 40f); + rect.xMin -= 15; + + EditorGUI.HelpBox(rect, msg, msgType); + + rect.x += rect.width - 97; + rect.y += 12; + rect.size = new Vector2(93, 18); + + if (GUI.Button(rect, "Print to console", EditorStyles.miniButtonRight)) + { + foreach (ImportLogEntry entry in entries) + { + entry.PrintToConsole(target); + } + } + } } } \ No newline at end of file diff --git a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkLevelImporterEditor.cs b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkLevelImporterEditor.cs index 903d119be..cf44448a9 100644 --- a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkLevelImporterEditor.cs +++ b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkLevelImporterEditor.cs @@ -54,6 +54,7 @@ public override void OnInspectorGUI() try { + DrawLogEntries(); TryDrawProjectReferenceButton(); DrawDependenciesProperty(); SectionDependencies.Draw(); diff --git a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkProjectImporterEditor.cs b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkProjectImporterEditor.cs index d973c4068..30b5291c0 100644 --- a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkProjectImporterEditor.cs +++ b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkProjectImporterEditor.cs @@ -93,6 +93,8 @@ private void GUIUpdate() { return; } + + DrawLogEntries(); TryReconstructCache(); diff --git a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkTilesetImporterEditor.cs b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkTilesetImporterEditor.cs index 825d590d3..ec87e89a7 100644 --- a/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkTilesetImporterEditor.cs +++ b/Assets/LDtkUnity/Editor/CustomEditor/Importer/LDtkTilesetImporterEditor.cs @@ -49,6 +49,8 @@ public override void OnInspectorGUI() return; } + DrawLogEntries(); + try { TryDrawProjectReferenceButton(); diff --git a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs index 9917ce55d..d5a52da7f 100644 --- a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs +++ b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkJsonImporter.cs @@ -32,8 +32,21 @@ public sealed override void OnImportAsset(AssetImportContext ctx) { LDtkDebug.Log($"OnImportAsset {GetType().Name} {assetPath}"); } - - MainImport(); + + try + { + MainImport(); + } + catch (Exception e) + { + Logger.LogError(e.ToString()); + } + finally + { +#if !UNITY_2022_2_OR_NEWER + Logger._entries.WriteTheEntries(); +#endif + } //serialize dependencies to display them in the inspector for easier dependency tracking. Profiler.BeginSample("SerializeStringDependencies"); diff --git a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkProjectImporter.cs b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkProjectImporter.cs index 0e616f02e..d4f1fc300 100644 --- a/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkProjectImporter.cs +++ b/Assets/LDtkUnity/Editor/ScriptedImporter/LDtkProjectImporter.cs @@ -355,7 +355,6 @@ public Sprite GetBackgroundArtifact(Level level) { return asset; } - Logger.LogError($"Tried retrieving a background from the importer's artifacts, but was null: \"{assetName}\""); return asset; } diff --git a/Assets/LDtkUnity/Runtime/Tools/LDtkDebug.cs b/Assets/LDtkUnity/Runtime/Tools/LDtkDebug.cs index ab2ea8eb5..06098040b 100644 --- a/Assets/LDtkUnity/Runtime/Tools/LDtkDebug.cs +++ b/Assets/LDtkUnity/Runtime/Tools/LDtkDebug.cs @@ -48,6 +48,7 @@ public static void Assert(bool condition, string msg = "Assertion failed", Objec private static bool ShouldBlock(string msg) { +#if UNITY_EDITOR if (!_dueToResetThisFrame) { EditorApplication.delayCall += Flush; @@ -71,6 +72,10 @@ void Flush() Messages[msg]++; return false; +#else + //in builds, we always want to log everything + return false; +#endif } diff --git a/Assets/LDtkUnity/Runtime/Tools/LDtkDebugInstance.cs b/Assets/LDtkUnity/Runtime/Tools/LDtkDebugInstance.cs index e13541589..bdf360978 100644 --- a/Assets/LDtkUnity/Runtime/Tools/LDtkDebugInstance.cs +++ b/Assets/LDtkUnity/Runtime/Tools/LDtkDebugInstance.cs @@ -1,6 +1,11 @@ #if UNITY_EDITOR +using System; using System.Collections.Generic; +using System.IO; +using JetBrains.Annotations; +using UnityEditor; using UnityEngine; +using Object = UnityEngine.Object; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; @@ -14,26 +19,42 @@ internal sealed class LDtkDebugInstance { private readonly HashSet _importMessages = new HashSet(); private readonly AssetImportContext _ctx; + public readonly ImportLogEntries _entries; public LDtkDebugInstance(AssetImportContext ctx) { _ctx = ctx; + _entries = new ImportLogEntries(_ctx.assetPath); } public void LogError(string msg, Object obj = null) { - if (!ShouldBlockImport(msg)) + if (ShouldBlockImport(msg)) { - _ctx.LogImportError(LDtkDebug.Format(msg) + '\n' + StackTraceUtility.ExtractStackTrace(), obj); + return; } + + msg = LDtkDebug.Format(msg) + '\n' + StackTraceUtility.ExtractStackTrace(); + _ctx.LogImportError(msg, obj); + +#if !UNITY_2022_2_OR_NEWER + _entries.Log(msg, ImportLogFlags.Error); +#endif } public void LogWarning(string msg, Object obj = null) { - if (!ShouldBlockImport(msg)) + if (ShouldBlockImport(msg)) { - _ctx.LogImportWarning(LDtkDebug.Format(msg) + '\n' + StackTraceUtility.ExtractStackTrace(), obj); + return; } + + msg = LDtkDebug.Format(msg) + '\n' + StackTraceUtility.ExtractStackTrace(); + _ctx.LogImportWarning(msg, obj); + +#if !UNITY_2022_2_OR_NEWER + _entries.Log(msg, ImportLogFlags.Warning); +#endif } private bool ShouldBlockImport(string msg) @@ -47,5 +68,103 @@ private bool ShouldBlockImport(string msg) return false; } } + + [Serializable] + internal sealed class ImportLogEntries + { + public List _entries = new List(); + [NonSerialized] public string AssetPath; + + public ImportLogEntries(string assetPath) + { + AssetPath = assetPath; + } + + public void Log(string msg, ImportLogFlags flag) + { + _entries.Add(new ImportLogEntry() + { + _message = msg, + _flag = flag + }); + } + + [UsedImplicitly] + public void WriteTheEntries() + { + string dir = Dir(); + string path = FilePath(); + + Directory.CreateDirectory(dir); + if (_entries.IsNullOrEmpty()) + { + File.WriteAllText(path, string.Empty); + return; + } + + string json = JsonUtility.ToJson(this); + File.WriteAllText(path, json); + } + + [UsedImplicitly] + public void ReadTheEntries() + { + string dir = Dir(); + string path = FilePath(); + + if (!Directory.Exists(dir)) + { + return; + } + if (!File.Exists(path)) + { + return; + } + + string json = File.ReadAllText(path); + if (json.IsNullOrEmpty()) + { + return; + } + _entries = JsonUtility.FromJson(json)._entries; + } + + private string Dir() + { + return Path.GetFullPath(Path.Combine(Application.dataPath, "..", "Library", "LDtkImportLogs")); + } + private string FilePath() + { + string guid = AssetDatabase.AssetPathToGUID(AssetPath); + return Path.Combine(Dir(), $"{Path.GetFileNameWithoutExtension(AssetPath)}_{guid}.txt"); + } + } + [Serializable] + public struct ImportLogEntry + { + public string _message; + public ImportLogFlags _flag; + + public void PrintToConsole(Object ctx = null) + { + switch (_flag) + { + case ImportLogFlags.Warning: + Debug.LogWarning(_message, ctx); + break; + case ImportLogFlags.Error: + Debug.LogError(_message, ctx); + break; + default: + break; + } + } + } + + public enum ImportLogFlags + { + Warning = 0, + Error = 1, + } } #endif diff --git a/Assets/Tests/Misc/OtherTechTests/TestAllFields/TestAllFieldsAtlas.spriteatlas b/Assets/Tests/Misc/OtherTechTests/TestAllFields/TestAllFieldsAtlas.spriteatlas index 7a80affc7..bfe8a1785 100644 --- a/Assets/Tests/Misc/OtherTechTests/TestAllFields/TestAllFieldsAtlas.spriteatlas +++ b/Assets/Tests/Misc/OtherTechTests/TestAllFields/TestAllFieldsAtlas.spriteatlas @@ -56,7 +56,8 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: 224189299094788638 - 3bfd9717c90f22543ad3c7f622610fdc: 8272528919120247681 - 3bfd9717c90f22543ad3c7f622610fdc: 1142751963475561313 - - 3bfd9717c90f22543ad3c7f622610fdc: 5204220526074233403 + - 3bfd9717c90f22543ad3c7f622610fdc: -8736937098133995988 + - 3bfd9717c90f22543ad3c7f622610fdc: -1600890068118172876 - 3bfd9717c90f22543ad3c7f622610fdc: -729595166678720623 - 3bfd9717c90f22543ad3c7f622610fdc: -5708486940372274095 - 3bfd9717c90f22543ad3c7f622610fdc: -7015064951437667370 @@ -78,7 +79,6 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: -2178389023277358906 - 3bfd9717c90f22543ad3c7f622610fdc: 8671509027516854545 - 3bfd9717c90f22543ad3c7f622610fdc: 5405936352967492607 - - 3bfd9717c90f22543ad3c7f622610fdc: 8187802710061021039 - 3bfd9717c90f22543ad3c7f622610fdc: 836125369759250139 - 3bfd9717c90f22543ad3c7f622610fdc: 2069742908207088579 - 3bfd9717c90f22543ad3c7f622610fdc: -6469431073843637200 @@ -88,7 +88,6 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: 1564639653813796984 - 3bfd9717c90f22543ad3c7f622610fdc: -3722467332538553113 - 3bfd9717c90f22543ad3c7f622610fdc: -6840274121644353493 - - 3bfd9717c90f22543ad3c7f622610fdc: -5233386743429784736 - 3bfd9717c90f22543ad3c7f622610fdc: 665231739316769324 - 3bfd9717c90f22543ad3c7f622610fdc: -5373011074891463494 - 3bfd9717c90f22543ad3c7f622610fdc: 3018770514725708074 @@ -98,19 +97,20 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: 4019509850969631635 - 3bfd9717c90f22543ad3c7f622610fdc: 6600165190104545447 - 3bfd9717c90f22543ad3c7f622610fdc: -8637182100155172510 + - 3bfd9717c90f22543ad3c7f622610fdc: 9096795990244672238 - 3bfd9717c90f22543ad3c7f622610fdc: -1252304867494575009 - 3bfd9717c90f22543ad3c7f622610fdc: -6560810523901265029 - 3bfd9717c90f22543ad3c7f622610fdc: 9168978867760256058 - 3bfd9717c90f22543ad3c7f622610fdc: 324624111566774235 - 3bfd9717c90f22543ad3c7f622610fdc: 8487754448338567549 - 3bfd9717c90f22543ad3c7f622610fdc: 6098312280204014285 + - 3bfd9717c90f22543ad3c7f622610fdc: -8695829626778156135 - 3bfd9717c90f22543ad3c7f622610fdc: -7499593994403485950 - 3bfd9717c90f22543ad3c7f622610fdc: -3161521652607124561 - 3bfd9717c90f22543ad3c7f622610fdc: 5521888595096228130 - 3bfd9717c90f22543ad3c7f622610fdc: 2918050796100065261 - 3bfd9717c90f22543ad3c7f622610fdc: -2006548728843933604 - 3bfd9717c90f22543ad3c7f622610fdc: -6958309551896386420 - - 3bfd9717c90f22543ad3c7f622610fdc: -6085891535392375189 - 3bfd9717c90f22543ad3c7f622610fdc: 928722812765484028 - 3bfd9717c90f22543ad3c7f622610fdc: 3329704161838246517 - 3bfd9717c90f22543ad3c7f622610fdc: -2693396991577558579 @@ -270,6 +270,7 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: -4406599167619206344 - 3bfd9717c90f22543ad3c7f622610fdc: 1689466584108520839 - 3bfd9717c90f22543ad3c7f622610fdc: -6934243134849737483 + - 3bfd9717c90f22543ad3c7f622610fdc: -5173503684214940989 - 3bfd9717c90f22543ad3c7f622610fdc: 1990341308094436406 - 3bfd9717c90f22543ad3c7f622610fdc: -1600185522653217252 - 3bfd9717c90f22543ad3c7f622610fdc: -5772036923821068580 @@ -320,6 +321,7 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: 4659432866396802033 - 3bfd9717c90f22543ad3c7f622610fdc: 2337622254847395236 - 3bfd9717c90f22543ad3c7f622610fdc: -5107346991026424785 + - 3bfd9717c90f22543ad3c7f622610fdc: -7262220409588453566 - 3bfd9717c90f22543ad3c7f622610fdc: -4114782143050953813 - 3bfd9717c90f22543ad3c7f622610fdc: -4489064088720122270 - 3bfd9717c90f22543ad3c7f622610fdc: -2323511815813998517 @@ -340,9 +342,9 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: 1552160303267886745 - 3bfd9717c90f22543ad3c7f622610fdc: 4308745778476494501 - 3bfd9717c90f22543ad3c7f622610fdc: 4808248663022043096 + - 3bfd9717c90f22543ad3c7f622610fdc: -1709085366694305900 - 3bfd9717c90f22543ad3c7f622610fdc: -5620937710674254288 - 3bfd9717c90f22543ad3c7f622610fdc: -4864528817776962590 - - 3bfd9717c90f22543ad3c7f622610fdc: 6580779011203303749 - 3bfd9717c90f22543ad3c7f622610fdc: -9220947028482152785 - 3bfd9717c90f22543ad3c7f622610fdc: -402904863523521988 - 3bfd9717c90f22543ad3c7f622610fdc: 5745745170503400129 @@ -454,7 +456,6 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: -6584433803855766002 - 3bfd9717c90f22543ad3c7f622610fdc: -5117805777503620153 - 3bfd9717c90f22543ad3c7f622610fdc: -2318836612531769924 - - 3bfd9717c90f22543ad3c7f622610fdc: -5537655973989300217 - 3bfd9717c90f22543ad3c7f622610fdc: 1317514753507009095 - 3bfd9717c90f22543ad3c7f622610fdc: 369142957976966748 - 3bfd9717c90f22543ad3c7f622610fdc: -7518160247021029016 @@ -517,7 +518,6 @@ SpriteAtlas: - 3bfd9717c90f22543ad3c7f622610fdc: -4203173029970540710 - 3bfd9717c90f22543ad3c7f622610fdc: -6383187044063548657 - 3bfd9717c90f22543ad3c7f622610fdc: -3478627971741997342 - - 3bfd9717c90f22543ad3c7f622610fdc: -2851675610490221840 - 3bfd9717c90f22543ad3c7f622610fdc: 982000059582067841 - 3bfd9717c90f22543ad3c7f622610fdc: -4487488802388537528 - 3bfd9717c90f22543ad3c7f622610fdc: -5037192859925365319 @@ -644,7 +644,8 @@ SpriteAtlas: - {fileID: 224189299094788638, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 8272528919120247681, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 1142751963475561313, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: 5204220526074233403, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: -8736937098133995988, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: -1600890068118172876, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -729595166678720623, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5708486940372274095, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -7015064951437667370, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -666,7 +667,6 @@ SpriteAtlas: - {fileID: -2178389023277358906, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 8671509027516854545, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 5405936352967492607, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: 8187802710061021039, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 836125369759250139, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 2069742908207088579, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -6469431073843637200, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -676,7 +676,6 @@ SpriteAtlas: - {fileID: 1564639653813796984, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -3722467332538553113, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -6840274121644353493, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: -5233386743429784736, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 665231739316769324, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5373011074891463494, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 3018770514725708074, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -686,19 +685,20 @@ SpriteAtlas: - {fileID: 4019509850969631635, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 6600165190104545447, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -8637182100155172510, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: 9096795990244672238, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -1252304867494575009, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -6560810523901265029, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 9168978867760256058, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 324624111566774235, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 8487754448338567549, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 6098312280204014285, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: -8695829626778156135, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -7499593994403485950, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -3161521652607124561, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 5521888595096228130, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 2918050796100065261, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -2006548728843933604, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -6958309551896386420, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: -6085891535392375189, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 928722812765484028, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 3329704161838246517, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -2693396991577558579, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -858,6 +858,7 @@ SpriteAtlas: - {fileID: -4406599167619206344, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 1689466584108520839, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -6934243134849737483, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: -5173503684214940989, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 1990341308094436406, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -1600185522653217252, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5772036923821068580, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -908,6 +909,7 @@ SpriteAtlas: - {fileID: 4659432866396802033, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 2337622254847395236, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5107346991026424785, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: -7262220409588453566, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -4114782143050953813, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -4489064088720122270, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -2323511815813998517, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -928,9 +930,9 @@ SpriteAtlas: - {fileID: 1552160303267886745, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 4308745778476494501, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 4808248663022043096, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} + - {fileID: -1709085366694305900, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5620937710674254288, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -4864528817776962590, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: 6580779011203303749, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -9220947028482152785, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -402904863523521988, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 5745745170503400129, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -1042,7 +1044,6 @@ SpriteAtlas: - {fileID: -6584433803855766002, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5117805777503620153, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -2318836612531769924, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: -5537655973989300217, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 1317514753507009095, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 369142957976966748, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -7518160247021029016, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -1105,7 +1106,6 @@ SpriteAtlas: - {fileID: -4203173029970540710, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -6383187044063548657, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -3478627971741997342, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - - {fileID: -2851675610490221840, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: 982000059582067841, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -4487488802388537528, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} - {fileID: -5037192859925365319, guid: 3bfd9717c90f22543ad3c7f622610fdc, type: 3} @@ -1231,7 +1231,8 @@ SpriteAtlas: - SunnyLand_471 - SunnyLand_481 - SunnyLand_470 - - SunnyLand_(x:208.00, y:48.00, width:32.00, height:48.00) + - SunnyLand_160_176_16_16 + - SunnyLand_208_48_32_48 - SunnyLand_121 - SunnyLand_120 - SunnyLand_123 @@ -1253,7 +1254,6 @@ SpriteAtlas: - SunnyLand_136 - SunnyLand_107 - SunnyLand_137 - - SunnyLand_(x:32.00, y:224.00, width:16.00, height:16.00) - SunnyLand_106 - SunnyLand_134 - SunnyLand_105 @@ -1263,7 +1263,6 @@ SpriteAtlas: - SunnyLand_133 - SunnyLand_130 - SunnyLand_131 - - SunnyLand_(x:160.00, y:176.00, width:16.00, height:16.00) - SunnyLand_91 - SunnyLand_90 - SunnyLand_93 @@ -1273,19 +1272,20 @@ SpriteAtlas: - SunnyLand_352 - SunnyLand_380 - SunnyLand_94 + - SunnyLand_96_288_32_16 - SunnyLand_353 - SunnyLand_383 - SunnyLand_97 - SunnyLand_350 - SunnyLand_382 - SunnyLand_96 + - SunnyLand_32_224_16_16 - SunnyLand_351 - SunnyLand_385 - SunnyLand_19 - SunnyLand_99 - SunnyLand_356 - SunnyLand_384 - - SunnyLand_(x:96.00, y:288.00, width:32.00, height:16.00) - SunnyLand_18 - SunnyLand_98 - SunnyLand_357 @@ -1445,6 +1445,7 @@ SpriteAtlas: - SunnyLand_250 - SunnyLand_459 - SunnyLand_458 + - SunnyLand_288_320_16_16 - SunnyLand_190 - SunnyLand_191 - SunnyLand_192 @@ -1495,6 +1496,7 @@ SpriteAtlas: - SunnyLand_168 - SunnyLand_113 - SunnyLand_173 + - SunnyLand_128_320_16_16 - SunnyLand_114 - SunnyLand_170 - SunnyLand_115 @@ -1515,9 +1517,9 @@ SpriteAtlas: - SunnyLand_160 - SunnyLand_163 - SunnyLand_162 + - SunnyLand_208_320_16_16 - SunnyLand_20 - SunnyLand_21 - - SunnyLand_(x:208.00, y:320.00, width:16.00, height:16.00) - SunnyLand_22 - SunnyLand_42 - SunnyLand_23 @@ -1629,7 +1631,6 @@ SpriteAtlas: - SunnyLand_225 - SunnyLand_239 - SunnyLand_289 - - SunnyLand_(x:128.00, y:320.00, width:16.00, height:16.00) - SunnyLand_391 - SunnyLand_214 - SunnyLand_222 @@ -1692,7 +1693,6 @@ SpriteAtlas: - SunnyLand_469 - SunnyLand_410 - SunnyLand_413 - - SunnyLand_(x:288.00, y:320.00, width:16.00, height:16.00) - SunnyLand_408 - SunnyLand_412 - SunnyLand_464