mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-04-24 21:38:59 +08:00
fix: MenuInstaller does not support cloning (#1173)
This commit is contained in:
parent
c11a76642c
commit
b1b27a87cb
@ -4,6 +4,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using nadena.dev.modular_avatar.core.editor.menu;
|
using nadena.dev.modular_avatar.core.editor.menu;
|
||||||
|
using nadena.dev.ndmf;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using VRC.SDK3.Avatars.Components;
|
using VRC.SDK3.Avatars.Components;
|
||||||
@ -45,6 +46,26 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
avatar.expressionsMenu = menu;
|
avatar.expressionsMenu = menu;
|
||||||
context.ClonedMenus[menu] = menu;
|
context.ClonedMenus[menu] = menu;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IEnumerable<VRCExpressionsMenu> GetMenus(VRCExpressionsMenu menu)
|
||||||
|
{
|
||||||
|
if (!menu) yield break;
|
||||||
|
foreach (var m in menu.controls
|
||||||
|
.Where(control => control.type == VRCExpressionsMenu.Control.ControlType.SubMenu)
|
||||||
|
.SelectMany(control => GetMenus(control.subMenu)))
|
||||||
|
yield return m;
|
||||||
|
yield return menu;
|
||||||
|
}
|
||||||
|
var currentMenus = GetMenus(avatar.expressionsMenu)
|
||||||
|
.ToDictionary(menu => ObjectRegistry.GetReference(menu), menu => menu);
|
||||||
|
foreach (var menuInstaller in menuInstallers)
|
||||||
|
{
|
||||||
|
var reference = ObjectRegistry.GetReference(menuInstaller.installTargetMenu);
|
||||||
|
if (currentMenus.ContainsKey(reference))
|
||||||
|
menuInstaller.installTargetMenu = currentMenus[reference];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_rootMenu = avatar.expressionsMenu;
|
_rootMenu = avatar.expressionsMenu;
|
||||||
var virtualMenu = VirtualMenu.ForAvatar(avatar, context);
|
var virtualMenu = VirtualMenu.ForAvatar(avatar, context);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user