namespace Zinnia.Utility { using UnityEngine; using Zinnia.Extension; /// /// Sets a parameter value on a given . /// public class AnimatorParameterMutator : MonoBehaviour { [Tooltip("The Animator with the parameter to set.")] [SerializeField] private Animator timeline; /// /// The with the parameter to set. /// public Animator Timeline { get { return timeline; } set { timeline = value; } } [Tooltip("The name of the parameter to set.")] [SerializeField] private string parameterName; /// /// The name of the parameter to set. /// public string ParameterName { get { return parameterName; } set { parameterName = value; } } /// /// The value if the is a float value. /// public virtual float FloatValue { get { return CanMutate() ? Timeline.GetFloat(ParameterName) : default; } set { if (CanMutate()) { Timeline.SetFloat(ParameterName, value); } } } /// /// The value if the is a integer value. /// public virtual int IntegerValue { get { return CanMutate() ? Timeline.GetInteger(ParameterName) : default; } set { if (CanMutate()) { Timeline.SetInteger(ParameterName, value); } } } /// /// The value if the is a bool value. /// public virtual bool BoolValue { get { return CanMutate() ? Timeline.GetBool(ParameterName) : default; } set { if (CanMutate()) { Timeline.SetBool(ParameterName, value); } } } /// /// Sets the trigger. /// public virtual void SetTrigger() { if (!CanMutate()) { return; } Timeline.SetTrigger(ParameterName); } /// /// Resets the trigger. /// public virtual void ResetTrigger() { if (!CanMutate()) { return; } Timeline.ResetTrigger(ParameterName); } /// /// Determines whether the component can be mutated. /// /// Whether the component can be mutated. protected virtual bool CanMutate() { return this.IsValidState() && Timeline != null && !string.IsNullOrEmpty(ParameterName); } } }