From 70277b8f0469bdc42fc69300885a955cb3820024 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 13 Apr 2022 20:41:58 +0200 Subject: [PATCH 1/3] [unity] Fixed incorrect reloading behaviour (especially of deform timeline) at Domain Reload. (Fix of previous commit 0820bd7). Closes #2066. --- .../Asset Types/SkeletonDataAssetInspector.cs | 2 +- .../spine-unity/Editor/Utility/AssetUtility.cs | 4 ++-- .../Editor/Utility/BlendModeMaterialsUtility.cs | 4 ++-- .../Editor/Utility/DataReloadHandler.cs | 15 ++++++++++++--- .../Editor/Utility/SpineEditorUtilities.cs | 15 ++++++++++++--- .../Asset Types/AnimationReferenceAsset.cs | 7 ++++++- 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Asset Types/SkeletonDataAssetInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Asset Types/SkeletonDataAssetInspector.cs index 2fa99cdf6..c3d286f9a 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Asset Types/SkeletonDataAssetInspector.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Asset Types/SkeletonDataAssetInspector.cs @@ -154,7 +154,7 @@ namespace Spine.Unity.Editor { void Clear () { preview.Clear(); - targetSkeletonDataAsset.Clear(); + SpineEditorUtilities.ClearSkeletonDataAsset(targetSkeletonDataAsset); targetSkeletonData = null; } diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs index f7d260373..a1836306f 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs @@ -462,7 +462,7 @@ namespace Spine.Unity.Editor { } Debug.LogFormat("Changes to '{0}' or atlas detected. Clearing SkeletonDataAsset: {1}", skeletonJSONPath, localPath); - skeletonDataAsset.Clear(); + SpineEditorUtilities.ClearSkeletonDataAsset(skeletonDataAsset); string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(skeletonDataAsset)); string lastHash = EditorPrefs.GetString(guid + "_hash"); @@ -947,7 +947,7 @@ namespace Spine.Unity.Editor { AssetDatabase.CreateAsset(skeletonDataAsset, filePath); } else { skeletonDataAsset.atlasAssets = atlasAssets; - skeletonDataAsset.Clear(); + SpineEditorUtilities.ClearSkeletonDataAsset(skeletonDataAsset); } var skeletonData = skeletonDataAsset.GetSkeletonData(true); if (skeletonData != null) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs index 8fc2eeee3..e86e21ea4 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/BlendModeMaterialsUtility.cs @@ -96,7 +96,7 @@ namespace Spine.Unity.Editor { } } - skeletonDataAsset.Clear(); + SpineEditorUtilities.ClearSkeletonDataAsset(skeletonDataAsset); skeletonData = skeletonDataAsset.GetSkeletonData(true); if (anyMaterialsChanged) ReloadSceneSkeletons(skeletonDataAsset); @@ -164,7 +164,7 @@ namespace Spine.Unity.Editor { var skinEntries = new List(); - skeletonDataAsset.Clear(); + SpineEditorUtilities.ClearSkeletonDataAsset(skeletonDataAsset); skeletonDataAsset.isUpgradingBlendModeMaterials = true; SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(true); diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/DataReloadHandler.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/DataReloadHandler.cs index 206520587..bf2bd9af6 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/DataReloadHandler.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/DataReloadHandler.cs @@ -91,8 +91,7 @@ namespace Spine.Unity.Editor { } foreach (var skeletonDataAsset in skeletonDataAssetsToReload) { - skeletonDataAsset.Clear(); - skeletonDataAsset.GetSkeletonData(true); + ReloadSkeletonDataAsset(skeletonDataAsset, false); } foreach (var skeletonRenderer in activeSkeletonRenderers) @@ -119,14 +118,24 @@ namespace Spine.Unity.Editor { } } + public static void ClearAnimationReferenceAssets (SkeletonDataAsset skeletonDataAsset) { + ForEachAnimationReferenceAsset(skeletonDataAsset, (referenceAsset) => referenceAsset.Clear()); + } + public static void ReloadAnimationReferenceAssets (SkeletonDataAsset skeletonDataAsset) { + ForEachAnimationReferenceAsset(skeletonDataAsset, (referenceAsset) => referenceAsset.Initialize()); + } + + private static void ForEachAnimationReferenceAsset (SkeletonDataAsset skeletonDataAsset, + System.Action func) { + string[] guids = UnityEditor.AssetDatabase.FindAssets("t:AnimationReferenceAsset"); foreach (string guid in guids) { string path = UnityEditor.AssetDatabase.GUIDToAssetPath(guid); if (!string.IsNullOrEmpty(path)) { var referenceAsset = UnityEditor.AssetDatabase.LoadAssetAtPath(path); if (referenceAsset.SkeletonDataAsset == skeletonDataAsset) - referenceAsset.Initialize(); + func(referenceAsset); } } } diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs index d8ebdbf21..37848229f 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs @@ -266,14 +266,23 @@ namespace Spine.Unity.Editor { ReinitializeComponent(component); } - public static void ReloadSkeletonDataAsset (SkeletonDataAsset skeletonDataAsset) { - if (skeletonDataAsset != null) { + public static void ClearSkeletonDataAsset (SkeletonDataAsset skeletonDataAsset) { + skeletonDataAsset.Clear(); + DataReloadHandler.ClearAnimationReferenceAssets(skeletonDataAsset); + } + + public static void ReloadSkeletonDataAsset (SkeletonDataAsset skeletonDataAsset, bool clearAtlasAssets = true) { + if (skeletonDataAsset == null) + return; + + if (clearAtlasAssets) { foreach (AtlasAssetBase aa in skeletonDataAsset.atlasAssets) { if (aa != null) aa.Clear(); } - skeletonDataAsset.Clear(); } + ClearSkeletonDataAsset(skeletonDataAsset); skeletonDataAsset.GetSkeletonData(true); + DataReloadHandler.ReloadAnimationReferenceAssets(skeletonDataAsset); } public static void ReinitializeComponent (SkeletonRenderer component) { diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/AnimationReferenceAsset.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/AnimationReferenceAsset.cs index f84152e30..49d661c9b 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/AnimationReferenceAsset.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/AnimationReferenceAsset.cs @@ -48,11 +48,16 @@ namespace Spine.Unity { if (animation == null) Initialize(); #endif - return animation; } } + /// Clears the cached animation corresponding to a loaded SkeletonData object. + /// Use this to force a reload for the next time Animation is called. + public void Clear () { + animation = null; + } + public void Initialize () { if (skeletonDataAsset == null) return; SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(AnimationReferenceAsset.QuietSkeletonData); From 14af269a25c6c7a47e419f1f7511bf6ee594595c Mon Sep 17 00:00:00 2001 From: Adrian Seeley Date: Tue, 19 Apr 2022 12:09:55 -0400 Subject: [PATCH 2/3] Fixed unpkg link for threejs (#2070) --- spine-ts/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spine-ts/README.md b/spine-ts/README.md index c9e2bb5aa..13b72e6c7 100644 --- a/spine-ts/README.md +++ b/spine-ts/README.md @@ -56,8 +56,8 @@ You can include a module in your project via a `