55 lines
2.1 KiB
C#
55 lines
2.1 KiB
C#
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.AssetContainer == null) return;
|
|
if (_configuration.ContainerMode != AacConfiguration.Container.Never) AssetDatabase.AddObjectToAsset(objectToAdd, _configuration.AssetContainer);
|
|
}
|
|
|
|
public void SaveAsRegular(Object objectToAdd)
|
|
{
|
|
if (_configuration.AssetContainer == null) return;
|
|
if (_configuration.ContainerMode == AacConfiguration.Container.Everything) AssetDatabase.AddObjectToAsset(objectToAdd, _configuration.AssetContainer);
|
|
}
|
|
|
|
public void ClearPreviousAssets()
|
|
{
|
|
if (_configuration.AssetContainer == null) return;
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |