namespace Sandbox;
///
/// For communicating with a Direct Playback Anim Node, which allows code to tell it to play a given sequence
///
public abstract class AnimGraphDirectPlayback
{
///
/// Set the time at which the currently playing sequence should have had a cycle of zero.
/// This will adjust the current cycle of the sequence to match.
///
public abstract float StartTime { set; }
///
/// Get the cycle of the currently playing sequence. Will return 0 if no sequence is playing.
///
public abstract float TimeNormalized { get; }
///
/// The duration of the currently playing sequence (seconds)
///
public abstract float Duration { get; }
///
/// The elapsed time of the currently playing animation sequence (seconds)
///
public abstract float Time { get; }
///
/// Returns the currently playing sequence.
///
public abstract string Name { get; }
///
/// Get the number of animations that can be used.
///
[Obsolete( $"Use {nameof( Sequences )}" )]
public abstract int AnimationCount { get; }
///
/// Get the list of animations that can be used.
///
[Obsolete( $"Use {nameof( Sequences )}" )]
public abstract IEnumerable Animations { get; }
///
/// Get the list of sequences that can be used.
///
public abstract IReadOnlyList Sequences { get; }
///
/// Play the given sequence until it ends, then blend back.
/// Calling this function with a new sequence while another one is playing will immediately start blending from the old one to the new one.
///
public abstract void Play( string name );
///
/// Same as the other Play function, but also sets a target position and heading for the sequence.
/// Over interpTime seconds, the entity's root motion will be augmented to move it to target and rotate it to heading.
///
public abstract void Play( string name, Vector3 target, float heading, float interpTime );
///
/// Stop playing the override sequence.
///
public abstract void Cancel();
}