You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.3 KiB
C#
73 lines
3.3 KiB
C#
// Animancer // Copyright 2020 Kybernetik //
|
|
|
|
namespace Animancer
|
|
{
|
|
/// <summary>
|
|
/// An object that can create an <see cref="AnimancerState"/> and manage the details of how it should be played.
|
|
/// <para></para>
|
|
/// Transitions are generally used as arguments for <see cref="AnimancerPlayable.Play(ITransition)"/>.
|
|
/// </summary>
|
|
public interface ITransition : IHasKey
|
|
{
|
|
/************************************************************************************************************************/
|
|
|
|
/// <summary>
|
|
/// Creates and returns a new <see cref="AnimancerState"/> connected to the `layer`.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// The first time a transition is used on an object, this method is called to create the state and register it
|
|
/// in the internal dictionary using the <see cref="IHasKey.Key"/> so that it can be reused later on.
|
|
/// </remarks>
|
|
AnimancerState CreateState(AnimancerLayer layer);
|
|
|
|
/// <summary>
|
|
/// When a transition is passed into <see cref="AnimancerPlayable.Play(ITransition)"/>, this property
|
|
/// determines which <see cref="Animancer.FadeMode"/> will be used.
|
|
/// </summary>
|
|
FadeMode FadeMode { get; }
|
|
|
|
/// <summary>The amount of time the transition should take (in seconds).</summary>
|
|
float FadeDuration { get; }
|
|
|
|
/// <summary>
|
|
/// Called by <see cref="AnimancerPlayable.Play(ITransition)"/> to apply any modifications to the `state`.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Unlike <see cref="CreateState"/>, this method is called every time the transition is used so it can do
|
|
/// things like set the <see cref="AnimancerState.Events"/> or <see cref="AnimancerState.Time"/>.
|
|
/// </remarks>
|
|
void Apply(AnimancerState state);
|
|
|
|
/************************************************************************************************************************/
|
|
}
|
|
|
|
/// <summary>
|
|
/// An <see cref="ITransition"/> with some additional details for the Unity Editor GUI.
|
|
/// </summary>
|
|
public interface ITransitionDetailed : ITransition
|
|
{
|
|
/************************************************************************************************************************/
|
|
|
|
/// <summary>Indicates what the value of <see cref="AnimancerState.IsLooping"/> will be for the created state.</summary>
|
|
bool IsLooping { get; }
|
|
|
|
/// <summary>Determines what <see cref="AnimancerState.NormalizedTime"/> to start the animation at.</summary>
|
|
float NormalizedStartTime { get; set; }
|
|
|
|
/// <summary>Determines how fast the animation plays (1x = normal speed).</summary>
|
|
float Speed { get; set; }
|
|
|
|
/// <summary>The maximum amount of time the animation is expected to take (in seconds).</summary>
|
|
float MaximumDuration { get; }
|
|
|
|
#if UNITY_EDITOR
|
|
/// <summary>[Editor-Only] Adds context menu functions for this transition.</summary>
|
|
void AddItemsToContextMenu(UnityEditor.GenericMenu menu, UnityEditor.SerializedProperty property,
|
|
Editor.Serialization.PropertyAccessor accessor);
|
|
#endif
|
|
|
|
/************************************************************************************************************************/
|
|
}
|
|
}
|
|
|