// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // using System; using System.Collections.Generic; using UnityEngine; namespace Animancer { /// A based . /// /// Documentation: /// /// Transition Assets /// /// When adding a to any derived classes, you can use /// and . /// /// https://kybernetik.com.au/animancer/api/Animancer/TransitionAssetBase [AnimancerHelpUrl(typeof(TransitionAssetBase))] public abstract partial class TransitionAssetBase : ScriptableObject, ITransition, ITransitionDetailed, IWrapper, IAnimationClipSource { /************************************************************************************************************************/ /// The name of the serialized backing field of . public const string TransitionField = "_Transition"; /************************************************************************************************************************/ /// Returns the wrapped by this . public abstract ITransitionDetailed GetTransition(); /// object IWrapper.WrappedObject => this != null ? GetTransition() : null; /************************************************************************************************************************/ /// public virtual float FadeDuration => GetTransition().FadeDuration; /// public virtual object Key => GetTransition().Key; /// public virtual FadeMode FadeMode => GetTransition().FadeMode; /// public virtual AnimancerState CreateState() => GetTransition().CreateState(); /// public virtual void Apply(AnimancerState state) { GetTransition().Apply(state); state.SetDebugName(this); } /************************************************************************************************************************/ /// Can this transition create a valid ? /// /// Use /// to also null check this reference, i.e: transition.IsValid(). /// public virtual bool IsValid => this != null && GetTransition().IsValid(); /// public bool IsLooping => GetTransition().IsLooping; /// public float NormalizedStartTime { get => GetTransition().NormalizedStartTime; set => GetTransition().NormalizedStartTime = value; } /// public float MaximumDuration => GetTransition().MaximumDuration; /// public float Speed { get => GetTransition().Speed; set => GetTransition().Speed = value; } /************************************************************************************************************************/ /// [] /// Calls . /// public virtual void GetAnimationClips(List clips) => clips.GatherFromSource(GetTransition()); /************************************************************************************************************************/ #if UNITY_EDITOR /// [Editor-Only] Creates an instance of the main non-abstract inheritor of this class. /// TransitionAsset sets this to use itself by default. public static new Func CreateInstance { get; set; } #endif /************************************************************************************************************************/ } }