From 14105036096ea9f368efb8d948f8e049f73d8067 Mon Sep 17 00:00:00 2001 From: bd_ Date: Tue, 14 Nov 2023 20:42:01 +0900 Subject: [PATCH] fix: select menu creates menu install targets in random order (#530) Fixes: #508 --- Editor/Inspector/Menu/MenuInstallerEditor.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Editor/Inspector/Menu/MenuInstallerEditor.cs b/Editor/Inspector/Menu/MenuInstallerEditor.cs index c447adc3..4fabf8d9 100644 --- a/Editor/Inspector/Menu/MenuInstallerEditor.cs +++ b/Editor/Inspector/Menu/MenuInstallerEditor.cs @@ -264,7 +264,7 @@ namespace nadena.dev.modular_avatar.core.editor { installTo.objectReferenceValue = null; - foreach (var target in targets) + foreach (var target in targets.Cast().OrderBy(ObjectHierarchyOrder)) { var installer = (ModularAvatarMenuInstaller) target; var child = new GameObject(); @@ -371,6 +371,20 @@ namespace nadena.dev.modular_avatar.core.editor Localization.ShowLanguageUI(); } + private string ObjectHierarchyOrder(Component arg) + { + var list = new List(); + var t = arg.transform; + while (t != null) + { + list.Add(t.GetSiblingIndex()); + t = t.parent; + } + + list.Reverse(); + return string.Join("", list.Select(n => (char) n)); + } + private void ExtractMenu() { serializedObject.ApplyModifiedProperties();