From dca6ad36ba25903dfbbe4480e4068992691d4954 Mon Sep 17 00:00:00 2001 From: bd_ Date: Fri, 14 Feb 2025 19:11:32 -0800 Subject: [PATCH] fix type harmonization --- Editor/MergeAnimatorProcessor.cs | 4 ++-- Editor/PluginDefinition/PluginDefinition.cs | 2 ++ Editor/RenameParametersHook.cs | 2 +- .../TypeAdjustment/ConvertTransitionTypes.cs | 5 ++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Editor/MergeAnimatorProcessor.cs b/Editor/MergeAnimatorProcessor.cs index 1002360f..47429d62 100644 --- a/Editor/MergeAnimatorProcessor.cs +++ b/Editor/MergeAnimatorProcessor.cs @@ -100,9 +100,9 @@ namespace nadena.dev.modular_avatar.core.editor } var stash = context.PluginBuildContext.GetState(); - + var clonedController = stash.Controllers.GetValueOrDefault(merge) - ?? _asc.ControllerContext.CloneContext.Clone(merge.animator); + ?? _asc.ControllerContext.CloneContext.CloneDistinct(merge.animator); string basePath; if (merge.pathMode == MergeAnimatorPathMode.Relative) diff --git a/Editor/PluginDefinition/PluginDefinition.cs b/Editor/PluginDefinition/PluginDefinition.cs index 742a1e17..2c3dd9ff 100644 --- a/Editor/PluginDefinition/PluginDefinition.cs +++ b/Editor/PluginDefinition/PluginDefinition.cs @@ -79,6 +79,8 @@ namespace nadena.dev.modular_avatar.core.editor.plugin seq.Run("Prune empty animator layers", ctx => { ctx.Extension().RemoveEmptyLayers(); }); + seq.Run("Harmonize animator parameter types", + ctx => { ctx.Extension().HarmonizeParameterTypes(); }); }); seq.WithRequiredExtension(typeof(AnimationServicesContext), _s2 => diff --git a/Editor/RenameParametersHook.cs b/Editor/RenameParametersHook.cs index dd601461..8e9c6064 100644 --- a/Editor/RenameParametersHook.cs +++ b/Editor/RenameParametersHook.cs @@ -70,7 +70,7 @@ namespace nadena.dev.modular_avatar.core.editor if (mama.animator == null) return null; - var cloned = AnimatorServices.ControllerContext.CloneContext.Clone(mama.animator, mama.layerType); + var cloned = AnimatorServices.ControllerContext.CloneContext.CloneDistinct(mama.animator, mama.layerType); Controllers[mama] = cloned; return cloned; diff --git a/UnitTests~/MergeAnimatorTests/TypeAdjustment/ConvertTransitionTypes.cs b/UnitTests~/MergeAnimatorTests/TypeAdjustment/ConvertTransitionTypes.cs index e0a024de..bd8c6549 100644 --- a/UnitTests~/MergeAnimatorTests/TypeAdjustment/ConvertTransitionTypes.cs +++ b/UnitTests~/MergeAnimatorTests/TypeAdjustment/ConvertTransitionTypes.cs @@ -237,7 +237,10 @@ public class ConvertTransitionTypes : TestBase var fx = (AnimatorController) FindFxController(prefab).animatorController; - Assert.AreEqual(fx.parameters[0].type, AnimatorControllerParameterType.Bool); + Assert.AreEqual( + AnimatorControllerParameterType.Bool, + fx.parameters.First(p => p.name == "bool").type + ); } void AssertTransitions(AnimatorControllerLayer layer, string src, string dest, int index,