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);
}
}
}