From 80c8b5bbc46b8a3a3f4492654f8e6ac919984046 Mon Sep 17 00:00:00 2001 From: pharan Date: Wed, 10 May 2017 03:59:51 +0800 Subject: [PATCH] [unity] Default z-spacing preferences. --- .../Editor/SpineEditorUtilities.cs | 58 +++++++++++-------- .../Editor/SkeletonGraphicInspector.cs | 7 +-- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs index 4715d4732..161cf283b 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs @@ -153,6 +153,10 @@ namespace Spine.Unity.Editor { const string DEFAULT_SHADER_KEY = "SPINE_DEFAULT_SHADER"; public static string defaultShader = DEFAULT_DEFAULT_SHADER; + const float DEFAULT_DEFAULT_ZSPACING = 0f; + const string DEFAULT_ZSPACING_KEY = "SPINE_DEFAULT_ZSPACING"; + public static float defaultZSpacing = DEFAULT_DEFAULT_ZSPACING; + const bool DEFAULT_SHOW_HIERARCHY_ICONS = true; const string SHOW_HIERARCHY_ICONS_KEY = "SPINE_SHOW_HIERARCHY_ICONS"; public static bool showHierarchyIcons = DEFAULT_SHOW_HIERARCHY_ICONS; @@ -165,15 +169,18 @@ namespace Spine.Unity.Editor { Initialize(); } + static void LoadPreferences () { + defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, DEFAULT_DEFAULT_MIX); + defaultScale = EditorPrefs.GetFloat(DEFAULT_SCALE_KEY, DEFAULT_DEFAULT_SCALE); + defaultZSpacing = EditorPrefs.GetFloat(DEFAULT_ZSPACING_KEY, DEFAULT_DEFAULT_ZSPACING); + defaultShader = EditorPrefs.GetString(DEFAULT_SHADER_KEY, DEFAULT_DEFAULT_SHADER); + showHierarchyIcons = EditorPrefs.GetBool(SHOW_HIERARCHY_ICONS_KEY, DEFAULT_SHOW_HIERARCHY_ICONS); + SpineHandles.handleScale = EditorPrefs.GetFloat(SCENE_ICONS_SCALE_KEY, DEFAULT_SCENE_ICONS_SCALE); + preferencesLoaded = true; + } + static void Initialize () { - { - defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, DEFAULT_DEFAULT_MIX); - defaultScale = EditorPrefs.GetFloat(DEFAULT_SCALE_KEY, DEFAULT_DEFAULT_SCALE); - defaultShader = EditorPrefs.GetString(DEFAULT_SHADER_KEY, DEFAULT_DEFAULT_SHADER); - showHierarchyIcons = EditorPrefs.GetBool(SHOW_HIERARCHY_ICONS_KEY, DEFAULT_SHOW_HIERARCHY_ICONS); - SpineHandles.handleScale = EditorPrefs.GetFloat(SCENE_ICONS_SCALE_KEY, DEFAULT_SCENE_ICONS_SCALE); - preferencesLoaded = true; - } + LoadPreferences(); DirectoryInfo rootDir = new DirectoryInfo(Application.dataPath); FileInfo[] files = rootDir.GetFiles("SpineEditorUtilities.cs", SearchOption.AllDirectories); @@ -214,14 +221,8 @@ namespace Spine.Unity.Editor { [PreferenceItem("Spine")] static void PreferencesGUI () { - if (!preferencesLoaded) { - defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, DEFAULT_DEFAULT_MIX); - defaultScale = EditorPrefs.GetFloat(DEFAULT_SCALE_KEY, DEFAULT_DEFAULT_SCALE); - defaultShader = EditorPrefs.GetString(DEFAULT_SHADER_KEY, DEFAULT_DEFAULT_SHADER); - showHierarchyIcons = EditorPrefs.GetBool(SHOW_HIERARCHY_ICONS_KEY, DEFAULT_SHOW_HIERARCHY_ICONS); - SpineHandles.handleScale = EditorPrefs.GetFloat(SCENE_ICONS_SCALE_KEY, DEFAULT_SCENE_ICONS_SCALE); - preferencesLoaded = true; - } + if (!preferencesLoaded) + LoadPreferences(); EditorGUI.BeginChangeCheck(); showHierarchyIcons = EditorGUILayout.Toggle(new GUIContent("Show Hierarchy Icons", "Show relevant icons on GameObjects with Spine Components on them. Disable this if you have large, complex scenes."), showHierarchyIcons); @@ -244,18 +245,22 @@ namespace Spine.Unity.Editor { if (EditorGUI.EndChangeCheck()) EditorPrefs.SetFloat(DEFAULT_SCALE_KEY, defaultScale); - EditorGUI.BeginChangeCheck(); - #if UNITY_5_3_OR_NEWER - defaultShader = EditorGUILayout.DelayedTextField(new GUIContent("Default shader", "Default shader for materials auto-generated on import."), defaultShader); - #else - defaultShader = EditorGUILayout.TextField(new GUIContent("Default shader", "Default shader for materials auto-generated on import."), defaultShader); - #endif + var shader = (EditorGUILayout.ObjectField("Default Shader", Shader.Find(defaultShader), typeof(Shader), false) as Shader); + defaultShader = shader != null ? shader.name : DEFAULT_DEFAULT_SHADER; if (EditorGUI.EndChangeCheck()) EditorPrefs.SetString(DEFAULT_SHADER_KEY, defaultShader); + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Editor Instantiation", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + defaultZSpacing = EditorGUILayout.Slider("Default Slot Z-Spacing", defaultZSpacing, -0.1f, 0f); + if (EditorGUI.EndChangeCheck()) + EditorPrefs.SetFloat(DEFAULT_ZSPACING_KEY, defaultZSpacing); + EditorGUILayout.Space(); - EditorGUILayout.LabelField("Editor", EditorStyles.boldLabel); + EditorGUILayout.LabelField("Handles and Gizmos", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); SpineHandles.handleScale = EditorGUILayout.Slider("Editor Bone Scale", SpineHandles.handleScale, 0.01f, 2f); SpineHandles.handleScale = Mathf.Max(0.01f, SpineHandles.handleScale); @@ -268,7 +273,7 @@ namespace Spine.Unity.Editor { GUILayout.Space(20); EditorGUILayout.LabelField("3rd Party Settings", EditorStyles.boldLabel); using (new GUILayout.HorizontalScope()) { - EditorGUILayout.PrefixLabel("TK2D"); + EditorGUILayout.PrefixLabel("Define TK2D"); if (GUILayout.Button("Enable", GUILayout.Width(64))) EnableTK2D(); if (GUILayout.Button("Disable", GUILayout.Width(64))) @@ -1359,6 +1364,7 @@ namespace Spine.Unity.Editor { throw e; } + // Set Defaults bool noSkins = data.DefaultSkin == null && (data.Skins == null || data.Skins.Count == 0); // Support attachmentless/skinless SkeletonData. skin = skin ?? data.DefaultSkin ?? (noSkins ? null : data.Skins.Items[0]); if (skin != null) { @@ -1366,6 +1372,8 @@ namespace Spine.Unity.Editor { newSkeletonAnimation.skeleton.SetSkin(skin); } + newSkeletonAnimation.zSpacing = defaultZSpacing; + newSkeletonAnimation.skeleton.Update(0); newSkeletonAnimation.state.Update(0); newSkeletonAnimation.state.Apply(newSkeletonAnimation.skeleton); @@ -1412,7 +1420,9 @@ namespace Spine.Unity.Editor { data = skeletonDataAsset.GetSkeletonData(true); } + // Set defaults skin = skin ?? data.DefaultSkin ?? data.Skins.Items[0]; + anim.zSpacing = defaultZSpacing; anim.Initialize(false); anim.skeleton.SetSkin(skin); diff --git a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Editor/SkeletonGraphicInspector.cs b/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Editor/SkeletonGraphicInspector.cs index 2bd6d1603..7e114cc7a 100644 --- a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Editor/SkeletonGraphicInspector.cs +++ b/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Editor/SkeletonGraphicInspector.cs @@ -194,11 +194,8 @@ namespace Spine.Unity.Editor { data = skeletonDataAsset.GetSkeletonData(true); } - if (skin == null) - skin = data.DefaultSkin; - - if (skin == null) - skin = data.Skins.Items[0]; + skin = skin ?? data.DefaultSkin ?? data.Skins.Items[0]; + graphic.MeshGenerator.settings.zSpacing = SpineEditorUtilities.defaultZSpacing; graphic.Initialize(false); graphic.Skeleton.SetSkin(skin);