Add IAacAssetContainerProvider and AacSimpleAssetContainerProvider

This commit is contained in:
Yū KOBAYASHI
2024-11-29 11:53:00 +01:00
committed by Haï~
parent 735afd669f
commit 061b5397df
2 changed files with 63 additions and 0 deletions
@@ -0,0 +1,52 @@
using UnityEngine;
using UnityEditor;
using UnityEditor.Animations;
// ReSharper disable once CheckNamespace
namespace AnimatorAsCode.V1
{
public interface IAacAssetContainerProvider
{
void SaveAsPersistenceRequired(Object objectToAdd);
void SaveAsRegular(Object objectToAdd);
void ClearPreviousAssets();
}
internal sealed class AacSimpleAssetContainerProvider : IAacAssetContainerProvider
{
private readonly AacConfiguration _configuration;
internal AacSimpleAssetContainerProvider(AacConfiguration configuration)
{
_configuration = configuration;
}
public void SaveAsPersistenceRequired(Object objectToAdd)
{
if (_configuration.ContainerMode != AacConfiguration.Container.Never) AssetDatabase.AddObjectToAsset(objectToAdd, _configuration.AssetContainer);
}
public void SaveAsRegular(Object objectToAdd)
{
if (_configuration.ContainerMode == AacConfiguration.Container.Everything) AssetDatabase.AddObjectToAsset(objectToAdd, _configuration.AssetContainer);
}
public void ClearPreviousAssets()
{
var allSubAssets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(_configuration.AssetContainer));
foreach (var subAsset in allSubAssets)
{
if (
(
subAsset.name.StartsWith($"{AacInternals.AutoGeneratedPrefix}{_configuration.AssetKey}__")
|| subAsset.name.StartsWith($"{AacInternals.AutoGeneratedLegacyPrefix}{_configuration.AssetKey}__")
)
&& (subAsset is AnimationClip || subAsset is BlendTree || subAsset is AvatarMask))
{
AssetDatabase.RemoveObjectFromAsset(subAsset);
}
}
}
}
}