| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
 
- using System;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- namespace Animancer
 
- {
 
-     /// <summary>A [<see cref="SerializableAttribute"/>] wrapper around an <see cref="TransitionAssetBase"/>.</summary>
 
-     /// <remarks>
 
-     /// This allows Transition Assets to be referenced inside [<see cref="SerializeReference"/>]
 
-     /// fields which can't directly reference <see cref="UnityEngine.Object"/>s.
 
-     /// <para></para>
 
-     /// <strong>Documentation:</strong>
 
-     /// <see href="https://kybernetik.com.au/animancer/docs/manual/transitions/assets">
 
-     /// Transition Assets</see>
 
-     /// </remarks>
 
-     /// https://kybernetik.com.au/animancer/api/Animancer/TransitionAssetReference
 
-     [Serializable]
 
-     public class TransitionAssetReference :
 
-         IAnimationClipSource,
 
-         ICopyable<TransitionAssetReference>,
 
-         IPolymorphic,
 
-         ITransitionDetailed,
 
-         IWrapper
 
-     {
 
-         /************************************************************************************************************************/
 
-         [SerializeField]
 
-         private TransitionAssetBase _Asset;
 
-         /// <summary>[<see cref="SerializeField"/>] The wrapped Transition Asset.</summary>
 
-         public ref TransitionAssetBase Asset
 
-             => ref _Asset;
 
-         /************************************************************************************************************************/
 
-         /// <summary>Creates a new <see cref="TransitionAssetReference"/>.</summary>
 
-         public TransitionAssetReference() { }
 
-         /// <summary>Creates a new <see cref="TransitionAssetReference"/>.</summary>
 
-         public TransitionAssetReference(TransitionAssetBase asset)
 
-         {
 
-             _Asset = asset;
 
-         }
 
-         /************************************************************************************************************************/
 
-         /// <inheritdoc/>
 
-         object IWrapper.WrappedObject
 
-             => _Asset;
 
-         /************************************************************************************************************************/
 
-         /// <summary>Can this transition create a valid <see cref="AnimancerState"/>?</summary>
 
-         public virtual bool IsValid
 
-             => _Asset.IsValid();
 
-         /// <inheritdoc/>
 
-         public virtual float FadeDuration
 
-             => _Asset != null
 
-             ? _Asset.FadeDuration
 
-             : 0;
 
-         /// <inheritdoc/>
 
-         public virtual object Key
 
-             => _Asset != null
 
-             ? _Asset.Key
 
-             : null;
 
-         /// <inheritdoc/>
 
-         public virtual FadeMode FadeMode
 
-             => _Asset != null
 
-             ? _Asset.FadeMode
 
-             : default;
 
-         /// <inheritdoc/>
 
-         public bool IsLooping
 
-             => _Asset != null
 
-             && _Asset.IsLooping;
 
-         /// <inheritdoc/>
 
-         public float NormalizedStartTime
 
-         {
 
-             get => _Asset != null
 
-                 ? _Asset.NormalizedStartTime
 
-                 : float.NaN;
 
-             set => _Asset.NormalizedStartTime = value;// No null check. Don't silently ignore commands.
 
-         }
 
-         /// <inheritdoc/>
 
-         public float MaximumDuration
 
-             => _Asset != null
 
-             ? _Asset.MaximumDuration
 
-             : 0;
 
-         /// <inheritdoc/>
 
-         public float Speed
 
-         {
 
-             get => _Asset != null
 
-                 ? _Asset.Speed
 
-                 : 1;
 
-             set => _Asset.Speed = value;// No null check. Don't silently ignore commands.
 
-         }
 
-         /// <inheritdoc/>
 
-         public virtual AnimancerState CreateState()
 
-             => _Asset.CreateState();
 
-         /// <inheritdoc/>
 
-         public virtual void Apply(AnimancerState state)
 
-             => _Asset.Apply(state);
 
-         /************************************************************************************************************************/
 
-         /// <summary>[<see cref="IAnimationClipSource"/>]
 
-         /// Calls <see cref="AnimancerUtilities.GatherFromSource(ICollection{AnimationClip}, object)"/>.
 
-         /// </summary>
 
-         public virtual void GetAnimationClips(List<AnimationClip> clips)
 
-             => clips.GatherFromSource(_Asset);
 
-         /************************************************************************************************************************/
 
-         /// <inheritdoc/>
 
-         public void CopyFrom(TransitionAssetReference copyFrom, CloneContext context)
 
-         {
 
-             if (copyFrom == null)
 
-             {
 
-                 _Asset = default;
 
-                 return;
 
-             }
 
-             _Asset = copyFrom._Asset;
 
-         }
 
-         /************************************************************************************************************************/
 
-         /// <summary>Describes the <see cref="Asset"/>.</summary>
 
-         public override string ToString()
 
-             => $"{nameof(TransitionAssetReference)}({_Asset})";
 
-         /************************************************************************************************************************/
 
-     }
 
- }
 
 
  |