From c7b6966055626b86aebbd105114eee19d37f4669 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 5 Jul 2016 16:12:21 +0800 Subject: [PATCH] [spine-unity] Better BoneFollower editor warnings. --- .../Editor/BoneFollowerInspector.cs | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs b/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs index 44221347e..93b6b791e 100644 --- a/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs +++ b/spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs @@ -36,7 +36,7 @@ namespace Spine.Unity.Editor { [CustomEditor(typeof(BoneFollower))] public class BoneFollowerInspector : UnityEditor.Editor { SerializedProperty boneName, skeletonRenderer, followZPosition, followBoneRotation; - BoneFollower component; + BoneFollower targetBoneFollower; bool needsReset; void OnEnable () { @@ -45,24 +45,23 @@ namespace Spine.Unity.Editor { followBoneRotation = serializedObject.FindProperty("followBoneRotation"); followZPosition = serializedObject.FindProperty("followZPosition"); - component = (BoneFollower)target; - if (component.SkeletonRenderer != null) - component.SkeletonRenderer.Initialize(false); + targetBoneFollower = (BoneFollower)target; + if (targetBoneFollower.SkeletonRenderer != null) + targetBoneFollower.SkeletonRenderer.Initialize(false); } override public void OnInspectorGUI () { if (needsReset) { - component.Initialize(); - component.LateUpdate(); + targetBoneFollower.Initialize(); + targetBoneFollower.LateUpdate(); needsReset = false; SceneView.RepaintAll(); } serializedObject.Update(); - // FindRenderer() + // Find Renderer if (skeletonRenderer.objectReferenceValue == null) { - SkeletonRenderer parentRenderer = BoneFollowerInspector.GetInParent(component.transform); - + SkeletonRenderer parentRenderer = BoneFollowerInspector.GetInParent(targetBoneFollower.transform); if (parentRenderer != null) { Debug.Log("Inspector automatically assigned BoneFollower.SkeletonRenderer"); skeletonRenderer.objectReferenceValue = parentRenderer; @@ -71,7 +70,7 @@ namespace Spine.Unity.Editor { EditorGUILayout.PropertyField(skeletonRenderer); - if (component.valid) { + if (targetBoneFollower.valid) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(boneName); if (EditorGUI.EndChangeCheck()) { @@ -79,18 +78,27 @@ namespace Spine.Unity.Editor { needsReset = true; serializedObject.Update(); } - EditorGUILayout.PropertyField(followBoneRotation); EditorGUILayout.PropertyField(followZPosition); } else { - GUILayout.Label("INVALID"); + var boneFollowerSkeletonRenderer = targetBoneFollower.skeletonRenderer; + if (boneFollowerSkeletonRenderer == null) { + EditorGUILayout.HelpBox("SkeletonRenderer is unassigned. Please assign a SkeletonRenderer (SkeletonAnimation or SkeletonAnimator).", MessageType.Warning); + } else { + boneFollowerSkeletonRenderer.Initialize(false); + + if (boneFollowerSkeletonRenderer.skeletonDataAsset == null) + EditorGUILayout.HelpBox("Assigned SkeletonRenderer does not have SkeletonData assigned to it.", MessageType.Warning); + + if (!boneFollowerSkeletonRenderer.valid) + EditorGUILayout.HelpBox("Assigned SkeletonRenderer is invalid. Check target SkeletonRenderer, its SkeletonDataAsset or the console for other errors.", MessageType.Warning); + } } - if (serializedObject.ApplyModifiedProperties() || - (UnityEngine.Event.current.type == EventType.ValidateCommand && UnityEngine.Event.current.commandName == "UndoRedoPerformed") - ) { - component.Initialize(); - } + var current = UnityEngine.Event.current; + bool wasUndo = (current.type == EventType.ValidateCommand && current.commandName == "UndoRedoPerformed"); + if (serializedObject.ApplyModifiedProperties() || wasUndo) + targetBoneFollower.Initialize(); } public static T GetInParent (Transform origin) where T : Component { @@ -101,7 +109,6 @@ namespace Spine.Unity.Editor { if(parent == null) return default(T); } - return parent.GetComponent(); #else return origin.GetComponentInParent();