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 readonly Dictionary> ClonedMappings = new Dictionary>(); private static readonly Dictionary OriginalMapping = new Dictionary(); public static void Clear() { ClonedMappings.Clear(); OriginalMapping.Clear(); } public static void Add(VRCExpressionsMenu original, VRCExpressionsMenu clonedMenu) { if (!ClonedMappings.TryGetValue(original, out ImmutableList clonedMenus)) { clonedMenus = ImmutableList.Empty; } ClonedMappings[original] = clonedMenus.Add(clonedMenu); OriginalMapping[clonedMenu] = original; } public static bool TryGetClonedMenus(VRCExpressionsMenu original, out ImmutableList clonedMenus) { return ClonedMappings.TryGetValue(original, out clonedMenus); } public static VRCExpressionsMenu GetOriginal(VRCExpressionsMenu cloned) { return OriginalMapping.TryGetValue(cloned, out VRCExpressionsMenu original) ? original : null; } } }