// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2026 Kybernetik // using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace Animancer { /// /// https://kybernetik.com.au/animancer/api/Animancer/TransitionAsset [CreateAssetMenu( menuName = Strings.MenuPrefix + "Transition Asset", order = Strings.AssetMenuOrder + 1)] [AnimancerHelpUrl(typeof(TransitionAsset))] public class TransitionAsset : TransitionAsset { /************************************************************************************************************************/ #if UNITY_EDITOR /************************************************************************************************************************/ /// [Editor-Only] Sets the . [InitializeOnLoadMethod] private static void SetMainImplementation() => CreateInstance = transition => { var asset = CreateInstance(); asset.Transition = transition; return asset; }; /************************************************************************************************************************/ /// protected override void Reset() { Transition = new ClipTransition(); } /************************************************************************************************************************/ /// [Editor-Only] Validates that the `mainAsset` is actually an asset. public static bool ValidateCreate(Object mainAsset) { var path = AssetDatabase.GetAssetPath(mainAsset); return !string.IsNullOrEmpty(path); } /// [Editor-Only] Creates a next to the `mainAsset`. public static TransitionAsset Create(Object mainAsset) { var path = AssetDatabase.GetAssetPath(mainAsset); if (string.IsNullOrEmpty(path)) { Debug.LogError( $"Can't create {nameof(TransitionAsset)} for something that isn't an asset.", mainAsset); return null; } path = System.IO.Path.GetDirectoryName(path); path = System.IO.Path.Combine(path, $"{mainAsset.name}.asset"); path = AssetDatabase.GenerateUniqueAssetPath(path); var asset = CreateInstance(); AssetDatabase.CreateAsset(asset, path); Selection.activeObject = asset; return asset; } /************************************************************************************************************************/ #endif /************************************************************************************************************************/ } }