From b99df7286aa933411f90eda6dbdeffd936058ae4 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sun, 14 Apr 2019 00:27:29 +0200 Subject: [PATCH 1/4] [libgdx] Fixed AnimationState crash when the number of timelines changes during a mix. --- .../src/com/esotericsoftware/spine/AnimationState.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index f13f94dda..edb3bbee5 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -223,7 +223,7 @@ public class AnimationState { } else { int[] timelineMode = current.timelineMode.items; - boolean firstFrame = current.timelinesRotation.size == 0; + boolean firstFrame = current.timelinesRotation.size != timelineCount << 1; if (firstFrame) current.timelinesRotation.setSize(timelineCount << 1); float[] timelinesRotation = current.timelinesRotation.items; @@ -275,7 +275,7 @@ public class AnimationState { int[] timelineMode = from.timelineMode.items; Object[] timelineHoldMix = from.timelineHoldMix.items; - boolean firstFrame = from.timelinesRotation.size == 0; + boolean firstFrame = from.timelinesRotation.size != timelineCount << 1; if (firstFrame) from.timelinesRotation.setSize(timelineCount << 1); float[] timelinesRotation = from.timelinesRotation.items; From 299ffc6de891dd45cc525c29b7ea16fdc65fbf9c Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Wed, 17 Apr 2019 18:09:20 +0200 Subject: [PATCH 2/4] [unity] Fixed broken inspector preview in Unity7 2019. Closes #1331. --- .../spine-unity/Editor/SkeletonDataAssetInspector.cs | 2 +- .../Editor/spine-unity/Editor/SkeletonDebugWindow.cs | 9 +++++++++ .../Editor/spine-unity/Editor/SpineEditorUtilities.cs | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs index 96570c75a..ea1e35589 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs @@ -30,7 +30,7 @@ #define SPINE_SKELETON_MECANIM - #if (UNITY_2017_4 || UNITY_2018) + #if (UNITY_2017_4 || UNITY_2018_1_OR_NEWER ) #define SPINE_UNITY_2018_PREVIEW_API #endif diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDebugWindow.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDebugWindow.cs index c8209d6f2..426b5b563 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDebugWindow.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDebugWindow.cs @@ -106,8 +106,13 @@ namespace Spine.Unity.Editor { } void OnSelectionChange () { + #if UNITY_2019_1_OR_NEWER + SceneView.duringSceneGui -= this.OnSceneGUI; + SceneView.duringSceneGui += this.OnSceneGUI; + #else SceneView.onSceneGUIDelegate -= this.OnSceneGUI; SceneView.onSceneGUIDelegate += this.OnSceneGUI; + #endif bool noSkeletonRenderer = false; @@ -148,7 +153,11 @@ namespace Spine.Unity.Editor { isPrefab = false; boneName = string.Empty; bone = null; + #if UNITY_2019_1_OR_NEWER + SceneView.duringSceneGui -= this.OnSceneGUI; + #else SceneView.onSceneGUIDelegate -= this.OnSceneGUI; + #endif } void OnDestroy () { diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs index 56c5faa24..018bfe9b3 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs @@ -201,8 +201,13 @@ namespace Spine.Unity.Editor { Icons.Initialize(); // Drag and Drop + #if UNITY_2019_1_OR_NEWER + SceneView.duringSceneGui -= DragAndDropInstantiation.SceneViewDragAndDrop; + SceneView.duringSceneGui += DragAndDropInstantiation.SceneViewDragAndDrop; + #else SceneView.onSceneGUIDelegate -= DragAndDropInstantiation.SceneViewDragAndDrop; SceneView.onSceneGUIDelegate += DragAndDropInstantiation.SceneViewDragAndDrop; + #endif EditorApplication.hierarchyWindowItemOnGUI -= HierarchyHandler.HandleDragAndDrop; EditorApplication.hierarchyWindowItemOnGUI += HierarchyHandler.HandleDragAndDrop; From 5e4141cbdd4d8584715059be3d83e45f349c6953 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 18 Apr 2019 17:00:58 +0200 Subject: [PATCH 3/4] [unity] Fixed "Skin not found: default" error at binary .skel.bytes files and SkeletonGraphic. Fixes #1332. --- .../spine-unity/Modules/SkeletonGraphic/SkeletonGraphic.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/SkeletonGraphic/SkeletonGraphic.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/SkeletonGraphic/SkeletonGraphic.cs index a195c5463..a0976b2fe 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/SkeletonGraphic/SkeletonGraphic.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Modules/SkeletonGraphic/SkeletonGraphic.cs @@ -49,8 +49,8 @@ namespace Spine.Unity { public SkeletonDataAsset skeletonDataAsset; public SkeletonDataAsset SkeletonDataAsset { get { return skeletonDataAsset; } } - [SpineSkin(dataField:"skeletonDataAsset")] - public string initialSkinName = "default"; + [SpineSkin(dataField:"skeletonDataAsset", defaultAsEmptyString:true)] + public string initialSkinName; public bool initialFlipX, initialFlipY; [SpineAnimation(dataField:"skeletonDataAsset")] @@ -111,7 +111,7 @@ namespace Spine.Unity { protected override void Reset () { base.Reset(); - if (material == null || material.shader != Shader.Find("Spine/SkeletonGraphic (Premultiply Alpha)")) + if (material == null || material.shader != Shader.Find("Spine/SkeletonGraphic")) Debug.LogWarning("SkeletonGraphic works best with the SkeletonGraphic material."); } #endif From 14a98545a140299b33ad4248bab48af6a6147fe4 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 18 Apr 2019 19:53:03 +0200 Subject: [PATCH 4/4] [unity] Fixed SkeletonDataAsset auto-update mechanism on .json file change for both scene view and inspector. Closes #1330. --- .../spine-unity/Editor/SkeletonDataAssetInspector.cs | 8 +++++++- .../Editor/spine-unity/Editor/SpineEditorUtilities.cs | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs index ea1e35589..f6f490125 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonDataAssetInspector.cs @@ -78,7 +78,7 @@ namespace Spine.Unity.Editor { string TargetAssetGUID { get { return AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(targetSkeletonDataAsset)); } } string LastSkinKey { get { return TargetAssetGUID + "_lastSkin"; } } string LastSkinName { get { return EditorPrefs.GetString(LastSkinKey, ""); } } - + void OnEnable () { InitializeEditor(); } @@ -93,6 +93,12 @@ namespace Spine.Unity.Editor { OnDestroy(); } + public void UpdateSkeletonData () { + preview.Clear(); + InitializeEditor(); + EditorUtility.SetDirty(targetSkeletonDataAsset); + } + void InitializeEditor () { SpineEditorUtilities.ConfirmInitialization(); targetSkeletonDataAsset = (SkeletonDataAsset)target; diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs index 018bfe9b3..df99008a4 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs @@ -800,6 +800,12 @@ namespace Spine.Unity.Editor { break; #endif } + + SkeletonDataAssetInspector[] skeletonDataInspectors = Resources.FindObjectsOfTypeAll(); + foreach (var inspector in skeletonDataInspectors) { + inspector.UpdateSkeletonData(); + } + // Any post processing of images // Under some circumstances (e.g. on first import) SkeletonGraphic objects @@ -818,7 +824,7 @@ namespace Spine.Unity.Editor { } } } - + static void ReloadSkeletonData (string skeletonJSONPath) { string dir = Path.GetDirectoryName(skeletonJSONPath); TextAsset textAsset = AssetDatabase.LoadAssetAtPath(skeletonJSONPath); @@ -870,6 +876,7 @@ namespace Spine.Unity.Editor { if (currentHash != null) EditorPrefs.SetString(guid + "_hash", currentHash); } + DataReloadHandler.ReloadSceneSkeletonComponents(skeletonDataAsset); } } }