From 9f9d5f7c267367a1dfe3306128afb2c071a7c82c Mon Sep 17 00:00:00 2001 From: bd_ Date: Sat, 4 Mar 2023 13:51:22 +0900 Subject: [PATCH] fixing ui issues= --- .../Editor/Inspector/Menu/MenuItemGUI.cs | 33 +++++++++++++++++++ .../Editor/Inspector/Menu/MenuPreviewGUI.cs | 2 +- .../Inspector/Menu/ToggleGroupInspector.cs | 29 +++++++++------- .../Runtime/Menu/Actions/ToggleGroup.cs | 1 + 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuItemGUI.cs b/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuItemGUI.cs index ce0a21a3..1b192a34 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuItemGUI.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuItemGUI.cs @@ -4,6 +4,7 @@ using System.Runtime.Serialization; using nadena.dev.modular_avatar.core.menu; using UnityEditor; using UnityEngine; +using UnityEngine.PlayerLoop; using VRC.SDK3.Avatars.ScriptableObjects; using static nadena.dev.modular_avatar.core.editor.Localization; @@ -223,6 +224,7 @@ namespace nadena.dev.modular_avatar.core.editor case VRCExpressionsMenu.Control.ControlType.SubMenu: { object menuSource = null; + bool canExpand = false; if (_prop_submenuSource != null) { @@ -255,6 +257,8 @@ namespace nadena.dev.modular_avatar.core.editor case SubmenuSource.MenuAsset: { EditorGUILayout.PropertyField(_submenu, G("menuitem.prop.submenu_asset")); + canExpand = true; + if (_submenu.hasMultipleDifferentValues) break; menuSource = _submenu.objectReferenceValue; break; @@ -289,6 +293,35 @@ namespace nadena.dev.modular_avatar.core.editor } } + if (canExpand && (_submenu.hasMultipleDifferentValues || _submenu.objectReferenceValue != null)) + { + if (GUILayout.Button(G("menuitem.misc.extract"))) + { + _obj.ApplyModifiedProperties(); + + foreach (var targetObj in _obj.targetObjects) + { + var menuItem = (ModularAvatarMenuItem) targetObj; + if (menuItem.Control.type == VRCExpressionsMenu.Control.ControlType.SubMenu + && menuItem.Control.subMenu != null + && menuItem.MenuSource == SubmenuSource.MenuAsset + ) + { + Undo.RecordObject(menuItem, "Extract menu"); + MenuExtractor.ExtractSingleLayerMenu(menuItem.Control.subMenu, + menuItem.gameObject); + menuItem.Control.subMenu = null; + menuItem.MenuSource = SubmenuSource.Children; + menuItem.menuSource_otherObjectChildren = null; + EditorUtility.SetDirty(menuItem); + PrefabUtility.RecordPrefabInstancePropertyModifications(menuItem); + } + } + + _obj.Update(); + } + } + break; } case VRCExpressionsMenu.Control.ControlType.RadialPuppet: diff --git a/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuPreviewGUI.cs b/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuPreviewGUI.cs index 6dcb485d..d3879178 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuPreviewGUI.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/MenuPreviewGUI.cs @@ -51,7 +51,7 @@ namespace nadena.dev.modular_avatar.core.editor if (_disableProp != null) { _disableProp.serializedObject.Update(); - GUILayout.Space(20); + GUILayout.Space(10); GUILayout.Label("Enabled", GUILayout.Width(50)); EditorGUILayout.PropertyField(_disableProp, GUIContent.none, GUILayout.Width(EditorGUIUtility.singleLineHeight)); diff --git a/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/ToggleGroupInspector.cs b/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/ToggleGroupInspector.cs index 601909fc..7809dba2 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/ToggleGroupInspector.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/Inspector/Menu/ToggleGroupInspector.cs @@ -11,6 +11,8 @@ namespace nadena.dev.modular_avatar.core.editor [CustomEditor(typeof(ToggleGroup))] internal class ToggleGroupInspector : MAEditorBase { + private bool _showInner; + private void OnEnable() { EditorApplication.hierarchyChanged += Invalidate; @@ -88,21 +90,26 @@ namespace nadena.dev.modular_avatar.core.editor { if (_menuItemActions == null) Invalidate(); - EditorGUILayout.LabelField("Bound menu items", EditorStyles.boldLabel); - foreach (var action in _menuItemActions) + _showInner = EditorGUILayout.Foldout(_showInner, "Bound menu items"); + if (_showInner) { - try + foreach (var action in _menuItemActions) { - EditorGUI.indentLevel++; - action(); - } - finally - { - EditorGUI.indentLevel--; - } + try + { + EditorGUI.indentLevel++; + action(); + } + finally + { + EditorGUI.indentLevel--; + } - EditorGUILayout.Space(4); + EditorGUILayout.Space(4); + } } + + Localization.ShowLanguageUI(); } } } \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/Menu/Actions/ToggleGroup.cs b/Packages/nadena.dev.modular-avatar/Runtime/Menu/Actions/ToggleGroup.cs index d24519d5..c4972bb6 100644 --- a/Packages/nadena.dev.modular-avatar/Runtime/Menu/Actions/ToggleGroup.cs +++ b/Packages/nadena.dev.modular-avatar/Runtime/Menu/Actions/ToggleGroup.cs @@ -2,6 +2,7 @@ namespace nadena.dev.modular_avatar.core { + [AddComponentMenu("Modular Avatar/MA Toggle Group")] public class ToggleGroup : AvatarTagComponent { }