From 061b5397df14d71a68c90e98e21d2ef68b69330f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Y=C5=AB=20KOBAYASHI?= Date: Fri, 29 Nov 2024 16:40:14 +0900 Subject: [PATCH] Add IAacAssetContainerProvider and AacSimpleAssetContainerProvider --- .../V1/Editor/AacAssetContainerProvider.cs | 52 +++++++++++++++++++ .../Editor/AacAssetContainerProvider.cs.meta | 11 ++++ 2 files changed, 63 insertions(+) create mode 100644 Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs create mode 100644 Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs.meta diff --git a/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs new file mode 100644 index 0000000..ea5386c --- /dev/null +++ b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs @@ -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); + } + } + } + } +} \ No newline at end of file diff --git a/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs.meta b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs.meta new file mode 100644 index 0000000..8fca584 --- /dev/null +++ b/Packages/dev.hai-vr.animator-as-code.v1/V1/Editor/AacAssetContainerProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 548220720b88e034288c669042c5d30a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: