mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-04-28 07:19:00 +08:00
36 lines
1.5 KiB
C#
36 lines
1.5 KiB
C#
|
using System.Collections.Generic;
|
|||
|
using System.Collections.Immutable;
|
|||
|
using VRC.SDK3.Avatars.ScriptableObjects;
|
|||
|
|
|||
|
// ReSharper disable once CheckNamespace
|
|||
|
namespace nadena.dev.modular_avatar.core.editor {
|
|||
|
public static class ClonedMenuMappings {
|
|||
|
private static Dictionary<VRCExpressionsMenu, ImmutableArray<VRCExpressionsMenu>> ClonedMappings =
|
|||
|
new Dictionary<VRCExpressionsMenu, ImmutableArray<VRCExpressionsMenu>>();
|
|||
|
|
|||
|
private static Dictionary<VRCExpressionsMenu, VRCExpressionsMenu> OriginalMapping =
|
|||
|
new Dictionary<VRCExpressionsMenu, VRCExpressionsMenu>();
|
|||
|
|
|||
|
public static void Clear() {
|
|||
|
ClonedMappings.Clear();
|
|||
|
OriginalMapping.Clear();
|
|||
|
}
|
|||
|
|
|||
|
public static void Add(VRCExpressionsMenu original, VRCExpressionsMenu clonedMenu) {
|
|||
|
if (!ClonedMappings.TryGetValue(original, out ImmutableArray<VRCExpressionsMenu> clonedMenus)) {
|
|||
|
clonedMenus = ImmutableArray<VRCExpressionsMenu>.Empty;
|
|||
|
}
|
|||
|
// Usually, one menu is rarely duplicated in multiple menus, so don't bother using a Builder
|
|||
|
ClonedMappings[original] = clonedMenus.Add(clonedMenu);
|
|||
|
OriginalMapping[clonedMenu] = original;
|
|||
|
}
|
|||
|
|
|||
|
public static bool TryGetClonedMenus(VRCExpressionsMenu original, out ImmutableArray<VRCExpressionsMenu> clonedMenus) {
|
|||
|
return ClonedMappings.TryGetValue(original, out clonedMenus);
|
|||
|
}
|
|||
|
|
|||
|
public static VRCExpressionsMenu GetOriginal(VRCExpressionsMenu cloned) {
|
|||
|
return OriginalMapping.TryGetValue(cloned, out VRCExpressionsMenu original) ? original : null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|