From 415b951d72ddaa946c923007c3b9e40b3bb43554 Mon Sep 17 00:00:00 2001 From: yum Date: Sun, 8 Mar 2026 17:00:35 -0700 Subject: Apply name resolution to blendshapes & shader toggles --- Scripts/YOTSNDMFGenerator.cs | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'Scripts') diff --git a/Scripts/YOTSNDMFGenerator.cs b/Scripts/YOTSNDMFGenerator.cs index 8a2faac..338aebc 100644 --- a/Scripts/YOTSNDMFGenerator.cs +++ b/Scripts/YOTSNDMFGenerator.cs @@ -104,8 +104,8 @@ namespace YOTS descriptor.expressionsMenu = menu; descriptor.expressionParameters = parameters; - // Resolve bare mesh names to full hierarchy paths. - var resolvedJson = ResolveMeshNames(config.jsonConfig, ctx.AvatarRootObject.transform); + // Resolve bare names to full hierarchy paths. + var resolvedJson = ResolveNames(config.jsonConfig, ctx.AvatarRootObject.transform); // Generate the YOTS animator. RuntimeAnimatorController generatedAnimator = null; @@ -175,19 +175,33 @@ namespace YOTS public bool skipGeneration; } - // Resolve bare mesh names (no '/') in meshToggles/inverseMeshToggles to all - // matching hierarchy paths. Names containing '/' are kept as explicit paths. - private static string ResolveMeshNames(string jsonConfig, Transform avatarRoot) { + // Resolve bare names (no '/') to full hierarchy paths. Names containing + // '/' are kept as explicit paths. + private static string ResolveNames(string jsonConfig, Transform avatarRoot) { var config = JsonUtility.FromJson(jsonConfig); var nameToPathsMap = BuildNameToPathsMap(avatarRoot); foreach (var toggle in config.toggles) { - toggle.meshToggles = ExpandMeshNames(toggle.meshToggles, nameToPathsMap); - toggle.inverseMeshToggles = ExpandMeshNames(toggle.inverseMeshToggles, nameToPathsMap); + toggle.meshToggles = ExpandNames(toggle.meshToggles, nameToPathsMap); + toggle.inverseMeshToggles = ExpandNames(toggle.inverseMeshToggles, nameToPathsMap); + foreach (var bs in toggle.blendShapes) { + bs.path = ExpandName(bs.path, nameToPathsMap); + bs.paths = ExpandNames(bs.paths, nameToPathsMap); + } + foreach (var st in toggle.shaderToggles) { + st.path = ExpandName(st.path, nameToPathsMap); + st.paths = ExpandNames(st.paths, nameToPathsMap); + } } return JsonUtility.ToJson(config); } - private static List ExpandMeshNames(List names, Dictionary> nameToPathsMap) { + private static string ExpandName(string name, Dictionary> nameToPathsMap) { + if (string.IsNullOrEmpty(name) || name.Contains('/')) return name; + if (nameToPathsMap.TryGetValue(name, out var paths) && paths.Count == 1) return paths[0]; + return name; + } + + private static List ExpandNames(List names, Dictionary> nameToPathsMap) { if (names == null) return null; var resolved = new List(); foreach (var name in names) { -- cgit v1.2.3