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