rename *Mapping To *Traverse

This commit is contained in:
raiti-chan 2022-12-18 17:01:46 +09:00
parent 2c4012ab61
commit 3cddbb0ad8
3 changed files with 31 additions and 31 deletions

View File

@ -127,11 +127,11 @@ namespace nadena.dev.modular_avatar.core.editor
_visitedMenuStack.Clear(); _visitedMenuStack.Clear();
_menuTree = new MenuTree(Avatar); _menuTree = new MenuTree(Avatar);
_menuTree.AvatarsMenuMapping(); _menuTree.TraverseAvatarMenu();
foreach (ModularAvatarMenuInstaller installer in Avatar.gameObject.GetComponentsInChildren<ModularAvatarMenuInstaller>(true)) foreach (ModularAvatarMenuInstaller installer in Avatar.gameObject.GetComponentsInChildren<ModularAvatarMenuInstaller>(true))
{ {
if (installer == TargetInstaller) continue; if (installer == TargetInstaller) continue;
_menuTree.MappingMenuInstaller(installer); _menuTree.TraverseMenuInstaller(installer);
} }
var root = new TreeViewItem(-1, -1, "<root>"); var root = new TreeViewItem(-1, -1, "<root>");

View File

@ -47,13 +47,13 @@ namespace nadena.dev.modular_avatar.core.editor
_rootMenu = avatar.expressionsMenu; _rootMenu = avatar.expressionsMenu;
_menuTree = new MenuTree(avatar); _menuTree = new MenuTree(avatar);
_menuTree.AvatarsMenuMapping(); _menuTree.TraverseAvatarMenu();
avatar.expressionsMenu = CloneMenu(avatar.expressionsMenu); avatar.expressionsMenu = CloneMenu(avatar.expressionsMenu);
foreach (ModularAvatarMenuInstaller installer in menuInstallers) foreach (ModularAvatarMenuInstaller installer in menuInstallers)
{ {
_menuTree.MappingMenuInstaller(installer); _menuTree.TraverseMenuInstaller(installer);
} }
foreach (MenuTree.ChildElement childElement in _menuTree.GetChildInstallers(null)) foreach (MenuTree.ChildElement childElement in _menuTree.GetChildInstallers(null))

View File

@ -32,35 +32,35 @@ namespace nadena.dev.modular_avatar.core.editor
public MenuTree(VRCAvatarDescriptor descriptor) public MenuTree(VRCAvatarDescriptor descriptor)
{ {
this._rootMenu = descriptor.expressionsMenu; _rootMenu = descriptor.expressionsMenu;
this._included = new HashSet<VRCExpressionsMenu>(); _included = new HashSet<VRCExpressionsMenu>();
this._menuChildrenMap = new Dictionary<VRCExpressionsMenu, ImmutableBuilder>(); _menuChildrenMap = new Dictionary<VRCExpressionsMenu, ImmutableBuilder>();
if (this._rootMenu == null) if (_rootMenu == null)
{ {
this._rootMenu = ScriptableObject.CreateInstance<VRCExpressionsMenu>(); _rootMenu = ScriptableObject.CreateInstance<VRCExpressionsMenu>();
} }
this._included.Add(this._rootMenu); _included.Add(_rootMenu);
} }
public void AvatarsMenuMapping() public void TraverseAvatarMenu()
{ {
if (this._rootMenu == null) return; if (_rootMenu == null) return;
this.MappingMenu(this._rootMenu); TraverseMenu(_rootMenu);
} }
public void MappingMenuInstaller(ModularAvatarMenuInstaller installer) public void TraverseMenuInstaller(ModularAvatarMenuInstaller installer)
{ {
if (!installer.enabled) return; if (!installer.enabled) return;
if (installer.menuToAppend == null) return; if (installer.menuToAppend == null) return;
this.MappingMenu(installer); TraverseMenu(installer);
} }
public ImmutableArray<ChildElement> GetChildren(VRCExpressionsMenu parent) public ImmutableArray<ChildElement> GetChildren(VRCExpressionsMenu parent)
{ {
if (parent == null) parent = this._rootMenu; if (parent == null) parent = _rootMenu;
if (!this._menuChildrenMap.TryGetValue(parent, out ImmutableBuilder immutableBuilder)) return ImmutableArray<ChildElement>.Empty; if (!_menuChildrenMap.TryGetValue(parent, out ImmutableBuilder immutableBuilder)) return ImmutableArray<ChildElement>.Empty;
if (immutableBuilder.immutableArray == ImmutableArray<ChildElement>.Empty) if (immutableBuilder.immutableArray == ImmutableArray<ChildElement>.Empty)
{ {
immutableBuilder.immutableArray = immutableBuilder.builder.ToImmutable(); immutableBuilder.immutableArray = immutableBuilder.builder.ToImmutable();
@ -75,7 +75,7 @@ namespace nadena.dev.modular_avatar.core.editor
if (parentInstaller != null && parentInstaller.menuToAppend == null) yield break; if (parentInstaller != null && parentInstaller.menuToAppend == null) yield break;
if (parentInstaller == null) if (parentInstaller == null)
{ {
queue.Enqueue(this._rootMenu); queue.Enqueue(_rootMenu);
} }
else else
{ {
@ -92,7 +92,7 @@ namespace nadena.dev.modular_avatar.core.editor
if (visitedMenus.Contains(parentMenu)) continue; if (visitedMenus.Contains(parentMenu)) continue;
visitedMenus.Add(parentMenu); visitedMenus.Add(parentMenu);
HashSet<ModularAvatarMenuInstaller> returnedInstallers = new HashSet<ModularAvatarMenuInstaller>(); HashSet<ModularAvatarMenuInstaller> returnedInstallers = new HashSet<ModularAvatarMenuInstaller>();
foreach (ChildElement childElement in this.GetChildren(parentMenu)) foreach (ChildElement childElement in GetChildren(parentMenu))
{ {
if (!childElement.isInstallerRoot) if (!childElement.isInstallerRoot)
{ {
@ -108,11 +108,11 @@ namespace nadena.dev.modular_avatar.core.editor
} }
private void MappingMenu(VRCExpressionsMenu root) private void TraverseMenu(VRCExpressionsMenu root)
{ {
foreach (KeyValuePair<string, VRCExpressionsMenu> childMenu in GetChildMenus(root)) foreach (KeyValuePair<string, VRCExpressionsMenu> childMenu in GetChildMenus(root))
{ {
this.MappingMenu(root, new ChildElement TraverseMenu(root, new ChildElement
{ {
menuName = childMenu.Key, menuName = childMenu.Key,
menu = childMenu.Value menu = childMenu.Value
@ -120,7 +120,7 @@ namespace nadena.dev.modular_avatar.core.editor
} }
} }
private void MappingMenu(ModularAvatarMenuInstaller installer) private void TraverseMenu(ModularAvatarMenuInstaller installer)
{ {
IEnumerable<KeyValuePair<string, VRCExpressionsMenu>> childMenus = GetChildMenus(installer.menuToAppend); IEnumerable<KeyValuePair<string, VRCExpressionsMenu>> childMenus = GetChildMenus(installer.menuToAppend);
IEnumerable<VRCExpressionsMenu> parents = Enumerable.Empty<VRCExpressionsMenu>(); IEnumerable<VRCExpressionsMenu> parents = Enumerable.Empty<VRCExpressionsMenu>();
@ -144,7 +144,7 @@ namespace nadena.dev.modular_avatar.core.editor
}; };
foreach (VRCExpressionsMenu parentMenu in parentsMenus) foreach (VRCExpressionsMenu parentMenu in parentsMenus)
{ {
this.MappingMenu(parentMenu, childElement); TraverseMenu(parentMenu, childElement);
} }
} }
@ -152,7 +152,7 @@ namespace nadena.dev.modular_avatar.core.editor
{ {
foreach (VRCExpressionsMenu parentMenu in parentsMenus) foreach (VRCExpressionsMenu parentMenu in parentsMenus)
{ {
this.MappingMenu(parentMenu, new ChildElement TraverseMenu(parentMenu, new ChildElement
{ {
installer = installer, installer = installer,
isInstallerRoot = true isInstallerRoot = true
@ -161,28 +161,28 @@ namespace nadena.dev.modular_avatar.core.editor
} }
} }
private void MappingMenu(VRCExpressionsMenu parent, ChildElement childElement) private void TraverseMenu(VRCExpressionsMenu parent, ChildElement childElement)
{ {
if (parent == null) parent = this._rootMenu; if (parent == null) parent = _rootMenu;
childElement.parent = parent; childElement.parent = parent;
if (!this._menuChildrenMap.TryGetValue(parent, out ImmutableBuilder children)) if (!_menuChildrenMap.TryGetValue(parent, out ImmutableBuilder children))
{ {
children = new ImmutableBuilder children = new ImmutableBuilder
{ {
builder = ImmutableArray.CreateBuilder<ChildElement>(), builder = ImmutableArray.CreateBuilder<ChildElement>(),
immutableArray = ImmutableArray<ChildElement>.Empty immutableArray = ImmutableArray<ChildElement>.Empty
}; };
this._menuChildrenMap[parent] = children; _menuChildrenMap[parent] = children;
} }
children.builder.Add(childElement); children.builder.Add(childElement);
children.immutableArray = ImmutableArray<ChildElement>.Empty; children.immutableArray = ImmutableArray<ChildElement>.Empty;
if (childElement.menu == null) return; if (childElement.menu == null) return;
if (this._included.Contains(childElement.menu)) return; if (_included.Contains(childElement.menu)) return;
this._included.Add(childElement.menu); _included.Add(childElement.menu);
foreach (KeyValuePair<string, VRCExpressionsMenu> childMenu in GetChildMenus(childElement.menu)) foreach (KeyValuePair<string, VRCExpressionsMenu> childMenu in GetChildMenus(childElement.menu))
{ {
this.MappingMenu(childElement.menu, new ChildElement TraverseMenu(childElement.menu, new ChildElement
{ {
menuName = childMenu.Key, menuName = childMenu.Key,
menu = childMenu.Value, menu = childMenu.Value,