diff --git a/Packages/nadena.dev.modular-avatar/Editor/MenuTree.cs b/Packages/nadena.dev.modular-avatar/Editor/MenuTree.cs index b775dec6..191dfc43 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/MenuTree.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/MenuTree.cs @@ -1,22 +1,21 @@ using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; -using NUnit.Framework; using UnityEngine; using VRC.SDK3.Avatars.Components; using VRC.SDK3.Avatars.ScriptableObjects; -using static VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionsMenu; using static VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionsMenu.Control; // ReSharper disable once CheckNamespace namespace nadena.dev.modular_avatar.core.editor { public class MenuTree { - private VRCAvatarDescriptor _descriptor; private readonly VRCExpressionsMenu _rootMenu; private readonly HashSet _included; private readonly Dictionary> _childrenMap; + private readonly Dictionary> _flashedChildrenMap; + public MenuTree(VRCAvatarDescriptor descriptor) { - this._descriptor = descriptor; this._rootMenu = descriptor.expressionsMenu; this._included = new HashSet(); this._childrenMap = new Dictionary>(); @@ -40,6 +39,12 @@ namespace nadena.dev.modular_avatar.core.editor { this.MappingMenu(installer.menuToAppend, parent); } + public IEnumerable GetChildren(VRCExpressionsMenu parent) { + // TODO: ライブラリとするのであれば、複製したリスト or ImmutableArray,を返すのが好ましい + if (parent == null) parent = this._rootMenu; + return this._childrenMap.TryGetValue(parent, out List children) ? children : Enumerable.Empty(); + } + private void MappingMenu(VRCExpressionsMenu root, VRCExpressionsMenu customParent = null) { Queue queue = new Queue(); queue.Enqueue(root);