From f77f0dc6f585d8bc9f0a640b511d032c6e27ae31 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 21 Oct 2022 17:25:45 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E6=95=B4=E7=90=86?= =?UTF-8?q?=E3=80=82SpringBoneEditor=20=E3=82=92=20VRM10Window=20=E3=81=AB?= =?UTF-8?q?=E7=B5=B1=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 元は Constraint などのエディタもあったのだけど、削った。量が減ったので合体 --- .../Components/SpringBone/SpringBoneEditor.cs | 59 ------------- .../SpringBone/SpringBoneEditor.cs.meta | 11 --- Assets/VRM10/Editor/Components/VRM10Window.cs | 84 ++++++++++++------- Assets/VRM10/Editor/Vrm10InstanceEditor.cs | 2 +- 4 files changed, 54 insertions(+), 102 deletions(-) delete mode 100644 Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs delete mode 100644 Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs.meta diff --git a/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs b/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs deleted file mode 100644 index 36765b466..000000000 --- a/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs +++ /dev/null @@ -1,59 +0,0 @@ -using UnityEditor; -using UnityEditor.IMGUI.Controls; -using UnityEngine; - -namespace UniVRM10 -{ - /// - /// TreeView でアクティブな SpringBone, ColliderGroup を管理して、 - /// アクティブな SpringBone と ColliderGroup を SceneHandle で Edit する。 - /// - public static class SpringBoneEditor - { - static SpringBoneTreeView s_treeView; - static SpringBoneTreeView GetTree(Vrm10Instance target, SerializedObject so) - { - if (s_treeView == null || s_treeView.Target != target) - { - var state = new TreeViewState(); - s_treeView = new SpringBoneTreeView(state, target, so); - s_treeView.Reload(); - } - return s_treeView; - } - - public static void Disable() - { - s_treeView = null; - } - - public static MonoBehaviour Active; - - /// - /// 2D の GUI 描画 - /// - public static void Draw2D(Vrm10Instance target, SerializedObject so) - { - var tree = GetTree(target, so); - if (GUILayout.Button("Reload")) - { - Disable(); - return; - } - - tree.Draw2D(); - } - - /// - /// 3D の Handle 描画 - /// - public static void Draw3D(Vrm10Instance target, SerializedObject so) - { - var tree = GetTree(target, so); - if (tree != null && target != null) - { - Active = tree.Draw3D(target.SpringBone); - } - } - } -} diff --git a/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs.meta b/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs.meta deleted file mode 100644 index 3e25de41b..000000000 --- a/Assets/VRM10/Editor/Components/SpringBone/SpringBoneEditor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 33ca35799b1168949bb4466aae13dfd4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM10/Editor/Components/VRM10Window.cs b/Assets/VRM10/Editor/Components/VRM10Window.cs index ad2125531..4701bf76f 100644 --- a/Assets/VRM10/Editor/Components/VRM10Window.cs +++ b/Assets/VRM10/Editor/Components/VRM10Window.cs @@ -32,7 +32,7 @@ namespace UniVRM10 void OnDisable() { - SpringBoneEditor.Disable(); + s_treeView = null; SceneView.duringSceneGui -= OnSceneGUI; // Debug.Log("OnDisable"); @@ -61,31 +61,28 @@ namespace UniVRM10 } m_root = id; m_so = value != null ? new SerializedObject(value) : null; - // m_constraints = null; - - if (Root != null) - { - var animator = Root.GetComponent(); - m_head = animator.GetBoneTransform(HumanBodyBones.Head); - } } } - Transform m_head; - - ScrollView m_scrollView = new ScrollView(); - /// - /// public entry point + /// Scene 上の 3D 表示 + /// + /// * Joint/Collider の Picker + /// /// - /// void OnSceneGUI(SceneView sceneView) { Tools.hidden = true; - SpringBoneEditor.Draw3D(Root, m_so); + Draw3D(Root, m_so); } - // + /// + /// Window 上の GUI + /// + /// * 対象 VRM の保持 + /// * 選択 Joint/Collider の表示 + /// + /// private void OnGUI() { if (Root == null) @@ -101,7 +98,7 @@ namespace UniVRM10 } // Root - Root = (Vrm10Instance)EditorGUILayout.ObjectField("vrm1", Root, typeof(Vrm10Instance), true); + Root = (Vrm10Instance)EditorGUILayout.ObjectField("Editing Model", Root, typeof(Vrm10Instance), true); if (Root == null) { return; @@ -109,22 +106,47 @@ namespace UniVRM10 // active EditorGUI.BeginDisabledGroup(true); - EditorGUILayout.ObjectField("joint or collider", SpringBoneEditor.Active, typeof(MonoBehaviour), true); + EditorGUILayout.ObjectField("Selected Object", Active, typeof(MonoBehaviour), true); EditorGUI.EndDisabledGroup(); - if (m_so == null) - { - m_so = new SerializedObject(Root); - } - if (m_so == null) - { - return; - } - - m_so.Update(); - SpringBoneEditor.Draw2D(Root, m_so); - - m_so.ApplyModifiedProperties(); + // if (m_so == null) + // { + // m_so = new SerializedObject(Root); + // } + // if (m_so == null) + // { + // return; + // } + // m_so.Update(); + // SpringBoneEditor.Draw2D(Root, m_so); + // m_so.ApplyModifiedProperties(); } + + SpringBoneTreeView s_treeView; + SpringBoneTreeView GetTree(Vrm10Instance target, SerializedObject so) + { + if (s_treeView == null || s_treeView.Target != target) + { + var state = new UnityEditor.IMGUI.Controls.TreeViewState(); + s_treeView = new SpringBoneTreeView(state, target, so); + s_treeView.Reload(); + } + return s_treeView; + } + + public MonoBehaviour Active; + + /// + /// 3D の Handle 描画 + /// + public void Draw3D(Vrm10Instance target, SerializedObject so) + { + var tree = GetTree(target, so); + if (tree != null && target != null) + { + Active = tree.Draw3D(target.SpringBone); + } + } + } } diff --git a/Assets/VRM10/Editor/Vrm10InstanceEditor.cs b/Assets/VRM10/Editor/Vrm10InstanceEditor.cs index 26b2ac7bd..3e17cb698 100644 --- a/Assets/VRM10/Editor/Vrm10InstanceEditor.cs +++ b/Assets/VRM10/Editor/Vrm10InstanceEditor.cs @@ -166,7 +166,7 @@ namespace UniVRM10 if (instance.Vrm != null) { - EditorGUILayout.HelpBox("SpringBone utility", MessageType.Info); + EditorGUILayout.HelpBox("SpringBone gizmo etc...", MessageType.Info); if (GUILayout.Button("Open " + VRM10Window.WINDOW_TITLE)) { VRM10Window.Open();