mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-04-24 21:38:59 +08:00
rename *Mapping To *Traverse
This commit is contained in:
parent
2c4012ab61
commit
3cddbb0ad8
@ -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>");
|
||||||
|
@ -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))
|
||||||
|
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user