// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2026 Kybernetik // using System; using System.Collections.Generic; using UnityEngine; namespace Animancer { /// /// A which gets its clip from a /// of s. /// /// /// /// /// Documentation: /// /// Directional Animation Sets /// /// Example: /// // Leave the Clip field empty in the Inspector and assign its AnimationSet instead. /// [SerializeField] private DirectionalClipTransition _Transition; /// /// ... /// /// // Then you can just call SetDirection and Play it like any other transition. /// // All of the transition's details like Fade Duration and Events will be applied to whichever clip is plays. /// _Transition.SetDirection(Vector2.right); /// _Animancer.Play(_Transition); /// /// /// https://kybernetik.com.au/animancer/api/Animancer/DirectionalClipTransition /// [Serializable] public class DirectionalClipTransition : ClipTransition, ICopyable { /************************************************************************************************************************/ [SerializeField] [Tooltip("The animations used to determine the " + nameof(Clip))] private DirectionalSet _AnimationSet; /// [] /// The used to determine the . /// public ref DirectionalSet AnimationSet => ref _AnimationSet; /// The name of the serialized backing field of . public const string AnimationSetField = nameof(_AnimationSet); /************************************************************************************************************************/ /// Sets the from the . public void SetDirection(Vector2 direction) => Clip = _AnimationSet.Get(direction); /// Sets the from the . public void SetDirection(int direction) => Clip = _AnimationSet.Get(direction); /// Sets the from the . public void SetDirection(Direction4 direction) => SetDirection((int)direction); /// Sets the from the . public void SetDirection(Direction8 direction) => SetDirection((int)direction); /************************************************************************************************************************/ /// public override void GatherAnimationClips(ICollection clips) { base.GatherAnimationClips(clips); clips.GatherFromSource(_AnimationSet); } /************************************************************************************************************************/ /// public override Transition Clone(CloneContext context) { var clone = new DirectionalClipTransition(); clone.CopyFrom(this, context); return clone; } /// public virtual void CopyFrom(DirectionalClipTransition copyFrom, CloneContext context) { base.CopyFrom(copyFrom, context); _AnimationSet = copyFrom._AnimationSet; } /************************************************************************************************************************/ } }