using UnityEngine;
namespace Invector
{
///
/// This class is useful when you don't make sure if parameter of the Animator exist
///
public class vAnimatorParameter
{
readonly AnimatorControllerParameter _parameter;
public static implicit operator int(vAnimatorParameter a)
{
if (a.isValid) return a._parameter.nameHash;
else
return -1;
}
public readonly bool isValid;
public vAnimatorParameter(Animator animator, string parameter)
{
if (animator && animator.ContainsParameter(parameter))
{
_parameter = animator.GetValidParameter(parameter);
this.isValid = true;
}
else this.isValid = false;
}
}
///
/// Extencion class for Animator Paramentes
///
public static class vAnimatorParameterHelper
{
///
/// Get Animator paramenter
///
/// Target animator
/// Target animator paramenter
///
public static AnimatorControllerParameter GetValidParameter(this Animator animator, string paramenterName)
{
if (null == animator)
{
return null;
}
return System.Array.Find(animator.parameters, p => p.name.Equals(paramenterName));
}
public static bool GetValidParameter(this Animator animator,string paramenterName, out AnimatorControllerParameter parameter)
{
parameter = animator.GetValidParameter(paramenterName);
return parameter != null;
}
///
/// Check if Animator has specific paramenter
///
/// Target animator
/// Target animator paramenter
///
public static bool ContainsParameter(this Animator animator, string paramenterName)
{
if (null == animator)
{
return false;
}
return System.Array.Exists(animator.parameters,p=>p.name.Equals(paramenterName));
}
///
/// Check if Animator has specific paramenter
///
/// Target animator
/// Target animator paramenter
/// Target animator paramenter type
///
public static bool ContainsParameter(this Animator animator, string parameterName, AnimatorControllerParameterType parameterType)
{
if (null == animator)
{
return false;
}
return System.Array.Exists(animator.parameters, p => p.name.Equals(parameterName) && p.type.Equals(parameterType)); ;
}
}
}