From e319d85c848c51f551d52dd21ba4b18aea6e9ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=C3=AF=7E?= Date: Mon, 2 Oct 2023 05:20:12 +0200 Subject: [PATCH] Fix avatar masks were generated in the controller instead of the container --- Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/Aac.cs | 7 +------ .../V1/Editor/AacInternals.cs | 9 +++++++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/Aac.cs b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/Aac.cs index 2ca3f7a..c3dbb61 100644 --- a/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/Aac.cs +++ b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/Aac.cs @@ -233,10 +233,7 @@ namespace AnimatorAsCode.V1 /// Set the Avatar Mask of the layer to be an Avatar Mask that allows the specified transforms. If `paths` is an empty array, all transforms are denied, which is effectively the same as calling `.WithAvatarMaskNoTransforms()`. The asset is generated into the container. public AacFlLayer ResolveAvatarMask(Transform[] paths) { - // FIXME: Fragile - var avatarMask = new AvatarMask(); - avatarMask.name = "zAutogenerated__" + _configuration.AssetKey + "_" + _fullLayerName + "__AvatarMask"; - avatarMask.hideFlags = HideFlags.None; + var avatarMask = AacInternals.NewAvatarMask(_configuration, _fullLayerName); if (paths.Length == 0) { @@ -260,8 +257,6 @@ namespace AnimatorAsCode.V1 avatarMask.SetHumanoidBodyPartActive((AvatarMaskBodyPart) i, false); } - AssetDatabase.AddObjectToAsset(avatarMask, _animatorController); - WithAvatarMask(avatarMask); return this; diff --git a/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacInternals.cs b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacInternals.cs index 67c29ff..7e0aad4 100644 --- a/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacInternals.cs +++ b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacInternals.cs @@ -50,6 +50,15 @@ namespace AnimatorAsCode.V1 if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(duplicated, component.AssetContainer); return duplicated; } + + internal static AvatarMask NewAvatarMask(AacConfiguration component, string fullLayerName) + { + var avatarMask = new AvatarMask(); + avatarMask.name = "zAutogenerated__" + component.AssetKey + "_" + fullLayerName + "__AvatarMask"; + avatarMask.hideFlags = HideFlags.None; + if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(avatarMask, component.AssetContainer); + return avatarMask; + } internal static EditorCurveBinding Binding(AacConfiguration component, Type type, Transform transform, string propertyName) {