diff --git a/Assets/VRM10/Editor/Vrm10InstanceEditor.cs b/Assets/VRM10/Editor/Vrm10InstanceEditor.cs index 906398682..233efce13 100644 --- a/Assets/VRM10/Editor/Vrm10InstanceEditor.cs +++ b/Assets/VRM10/Editor/Vrm10InstanceEditor.cs @@ -24,6 +24,8 @@ namespace UniVRM10 LookAt, SpringBone, } + static Tab s_selected = default; + static bool s_foldRuntimeLookAt = false; Vrm10Instance m_instance; @@ -226,7 +228,7 @@ namespace UniVRM10 root.Add(s); } - var tabs = new EnumField("select UI", default(Tab)); + var tabs = new EnumField("select UI", s_selected); root.Add(tabs); var body = new VisualElement(); @@ -239,7 +241,7 @@ namespace UniVRM10 foreach (var (tab, content) in contents) { // content.visible = tab == Tab.VrmInstance; - content.style.display = tab == Tab.VrmInstance + content.style.display = tab == s_selected ? DisplayStyle.Flex : DisplayStyle.None ; @@ -249,11 +251,11 @@ namespace UniVRM10 tabs.RegisterValueChangedCallback(e => { - var selected = (Tab)e.newValue; + s_selected = (Tab)e.newValue; foreach (var (tab, content) in contents) { // content.visible = tab == selected; - content.style.display = tab == selected + content.style.display = tab == s_selected ? DisplayStyle.Flex : DisplayStyle.None ; @@ -277,11 +279,80 @@ namespace UniVRM10 void GUILookAt() { + if (!target) + { + return; + } serializedObject.Update(); EditorGUILayout.PropertyField(m_drawLookatGizmo); EditorGUILayout.PropertyField(m_lookatTarget); EditorGUILayout.PropertyField(m_lookatTargetType); serializedObject.ApplyModifiedProperties(); + + // lookat info + if (Application.isPlaying) + { + EditorGUILayout.Space(); + s_foldRuntimeLookAt = EditorGUILayout.Foldout(s_foldRuntimeLookAt, "RuntimeInfo"); + if (s_foldRuntimeLookAt) + { + var enabled = GUI.enabled; + GUI.enabled = false; + EditorGUILayout.Slider("yaw(-180 ~ +180)", m_instance.Runtime.LookAt.Yaw, -180, 180); + EditorGUILayout.Slider("pitch(-90 ~ +90)", m_instance.Runtime.LookAt.Pitch, -90, 90); + if (m_instance.Runtime.LookAt.EyeDirectionApplicable is LookAtEyeDirectionApplicableToBone) + { + EditorGUILayout.LabelField("BoneTYpe"); + } + else if (m_instance.Runtime.LookAt.EyeDirectionApplicable is LookAtEyeDirectionApplicableToExpression) + { + EditorGUILayout.LabelField("ExpressionType"); + var w = m_instance.Runtime.Expression.ActualWeights; + // left + if (w.TryGetValue(ExpressionKey.LookLeft, out var left)) + { + EditorGUILayout.Slider("left", left, 0, 1); + } + else + { + EditorGUILayout.TextField("left"); + } + // right + if (w.TryGetValue(ExpressionKey.LookRight, out var right)) + { + EditorGUILayout.Slider("right", right, 0, 1); + } + else + { + EditorGUILayout.TextField("right"); + } + // up + if (w.TryGetValue(ExpressionKey.LookUp, out var up)) + { + EditorGUILayout.Slider("up", up, 0, 1); + } + else + { + EditorGUILayout.TextField("up"); + } + // down + if (w.TryGetValue(ExpressionKey.LookDown, out var down)) + { + EditorGUILayout.Slider("down", down, 0, 1); + } + else + { + EditorGUILayout.TextField("down"); + } + } + else + { + EditorGUILayout.LabelField($"UnknownTYpe: {m_instance.Runtime.LookAt.EyeDirectionApplicable}"); + } + GUI.enabled = enabled; + Repaint(); + } + } } VisualElement GUISpringBone()