Fix avatar masks were generated in the controller instead of the container

This commit is contained in:
Haï~
2023-10-02 05:20:12 +02:00
parent a603cd5690
commit e319d85c84
2 changed files with 10 additions and 6 deletions
@@ -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;
@@ -51,6 +51,15 @@ namespace AnimatorAsCode.V1
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)
{
return new EditorCurveBinding