From b23ef5ef1af4599f52e5cf13fe5888834dec3623 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 24 May 2019 11:47:14 +0200 Subject: [PATCH] [unity] Fixed game and scene view updates on skin change for SkeletonRenderer. Closes #1361 --- .../Editor/SkeletonRendererInspector.cs | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonRendererInspector.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonRendererInspector.cs index 025e4aaa4..add04fb85 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonRendererInspector.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/SkeletonRendererInspector.cs @@ -163,6 +163,7 @@ namespace Spine.Unity.Editor { override public void OnInspectorGUI () { bool multi = serializedObject.isEditingMultipleObjects; DrawInspectorGUI(multi); + HandleSkinChange(); if (serializedObject.ApplyModifiedProperties() || SpineInspectorUtility.UndoRedoPerformed(Event.current) || AreAnyMaskMaterialsMissing()) { if (!Application.isPlaying) { @@ -174,21 +175,6 @@ namespace Spine.Unity.Editor { SceneView.RepaintAll(); } } - - if (!Application.isPlaying && Event.current.type == EventType.Layout) { - bool mismatchDetected = false; - if (multi) { - foreach (var o in targets) - mismatchDetected |= UpdateIfSkinMismatch((SkeletonRenderer)o); - } else { - mismatchDetected |= UpdateIfSkinMismatch(target as SkeletonRenderer); - } - - if (mismatchDetected) { - mismatchDetected = false; - SceneView.RepaintAll(); - } - } } protected virtual void DrawInspectorGUI (bool multi) { @@ -493,12 +479,26 @@ namespace Spine.Unity.Editor { } } - static bool UpdateIfSkinMismatch (SkeletonRenderer skeletonRenderer) { + void HandleSkinChange() { + if (!Application.isPlaying && Event.current.type == EventType.Layout && !initialSkinName.hasMultipleDifferentValues) { + bool mismatchDetected = false; + string newSkinName = initialSkinName.stringValue; + foreach (var o in targets) { + mismatchDetected |= UpdateIfSkinMismatch((SkeletonRenderer)o, newSkinName); + } + + if (mismatchDetected) { + mismatchDetected = false; + SceneView.RepaintAll(); + } + } + } + + static bool UpdateIfSkinMismatch (SkeletonRenderer skeletonRenderer, string componentSkinName) { if (!skeletonRenderer.valid) return false; var skin = skeletonRenderer.Skeleton.Skin; string skeletonSkinName = skin != null ? skin.Name : null; - string componentSkinName = skeletonRenderer.initialSkinName; bool defaultCase = skin == null && string.IsNullOrEmpty(componentSkinName); bool fieldMatchesSkin = defaultCase || string.Equals(componentSkinName, skeletonSkinName, System.StringComparison.Ordinal);