Allow any object to be an asset container:

- Asset containers are no longer restricted to the AnimatorController class when using the new GenericAssetContainer configuration field
- The asset container will not be used if it is not a persistent asset
This commit is contained in:
Haï~
2023-10-03 23:46:50 +02:00
parent 2f5ebee617
commit 1a559b6251
4 changed files with 16 additions and 7 deletions
@@ -26,10 +26,18 @@ namespace AnimatorAsCode.V1
public Transform AnimatorRoot;
public Transform DefaultValueRoot;
public AnimatorController AssetContainer;
public Object GenericAssetContainer;
public string AssetKey;
public IAacDefaultsProvider DefaultsProvider;
public Dictionary<Type, object> AdditionalData; // Nullable
public Object GetPersistentAssetContainer()
{
var container = AssetContainer != null ? AssetContainer : GenericAssetContainer;
if (container != null && EditorUtility.IsPersistent(container)) return container;
return null;
}
public AacConfiguration WithAdditonalData(Type key, object value)
{
var conf = this;
@@ -413,7 +421,7 @@ namespace AnimatorAsCode.V1
/// Removes all assets from the asset container matching the specified asset key.
public void ClearPreviousAssets()
{
var allSubAssets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(_configuration.AssetContainer));
var allSubAssets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(_configuration.GetPersistentAssetContainer()));
foreach (var subAsset in allSubAssets)
{
if (subAsset.name.StartsWith($"zAutogenerated__{_configuration.AssetKey}__")
@@ -16,7 +16,7 @@ namespace AnimatorAsCode.V1
var animatorController = new AnimatorController();
animatorController.name = "zAutogenerated__" + component.AssetKey + "__" + suffix + "_" + Random.Range(0, Int32.MaxValue); // FIXME animation name conflict
animatorController.hideFlags = HideFlags.None;
if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(animatorController, component.AssetContainer);
if (component.GetPersistentAssetContainer() != null) AssetDatabase.AddObjectToAsset(animatorController, component.GetPersistentAssetContainer());
return animatorController;
}
@@ -29,7 +29,7 @@ namespace AnimatorAsCode.V1
{
clip.name = "zAutogenerated__" + component.AssetKey + "__" + suffix + "_" + Random.Range(0, Int32.MaxValue); // FIXME animation name conflict
clip.hideFlags = HideFlags.None;
if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(clip, component.AssetContainer);
if (component.GetPersistentAssetContainer() != null) AssetDatabase.AddObjectToAsset(clip, component.GetPersistentAssetContainer());
return clip;
}
@@ -38,7 +38,7 @@ namespace AnimatorAsCode.V1
var clip = new BlendTree();
clip.name = "zAutogenerated__" + component.AssetKey + "__" + suffix + "_" + Random.Range(0, Int32.MaxValue); // FIXME animation name conflict
clip.hideFlags = HideFlags.None;
if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(clip, component.AssetContainer);
if (component.GetPersistentAssetContainer() != null) AssetDatabase.AddObjectToAsset(clip, component.GetPersistentAssetContainer());
return clip;
}
@@ -47,7 +47,7 @@ namespace AnimatorAsCode.V1
var duplicated = (T)Object.Instantiate(assetToDuplicate);
duplicated.name = "zAutogenerated__" + component.AssetKey + "__" + assetToDuplicate.name + "_" + Random.Range(0, Int32.MaxValue); // FIXME animation name conflict
duplicated.hideFlags = HideFlags.None;
if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(duplicated, component.AssetContainer);
if (component.GetPersistentAssetContainer() != null) AssetDatabase.AddObjectToAsset(duplicated, component.GetPersistentAssetContainer());
return duplicated;
}
@@ -56,7 +56,7 @@ namespace AnimatorAsCode.V1
var avatarMask = new AvatarMask();
avatarMask.name = "zAutogenerated__" + component.AssetKey + "_" + fullLayerName + "__AvatarMask";
avatarMask.hideFlags = HideFlags.None;
if (component.AssetContainer != null) AssetDatabase.AddObjectToAsset(avatarMask, component.AssetContainer);
if (component.GetPersistentAssetContainer() != null) AssetDatabase.AddObjectToAsset(avatarMask, component.GetPersistentAssetContainer());
return avatarMask;
}
@@ -1,7 +1,7 @@
{
"name": "dev.hai-vr.animator-as-code.v1",
"displayName": "Animator As Code",
"version": "1.0.9906",
"version": "1.0.9907",
"unity": "2019.4",
"description": "Animator As Code",
"vrchatVersion" : "2022.1.1",