public static FieldInfo GetFieldInfoForProperty(SerializedProperty property)
        {
            FieldInfo fieldInfo;

            if (!AnimatedParameterCache.TryGetFieldInfoForProperty(property, out fieldInfo))
            {
                Type _;
                fieldInfo = ScriptAttributeUtility.GetFieldInfoFromProperty(property, out _);
                AnimatedParameterCache.SetFieldInfoForProperty(property, fieldInfo);
            }

            return(fieldInfo);
        }
        public static FieldInfo[] GetScriptPlayableFields(IPlayableAsset asset)
        {
            if (asset == null)
            {
                return(new FieldInfo[0]);
            }

            FieldInfo[] scriptPlayableFields;
            if (!AnimatedParameterCache.TryGetScriptPlayableFields(asset.GetType(), out scriptPlayableFields))
            {
                scriptPlayableFields = GetScriptPlayableFields_Internal(asset);
                AnimatedParameterCache.SetScriptPlayableFields(asset.GetType(), scriptPlayableFields);
            }

            return(scriptPlayableFields);
        }
        public static string GetAnimatedParameterBindingName(UnityObject asset, string parameterName)
        {
            if (asset == null)
            {
                return(parameterName);
            }

            string bindingName;

            if (!AnimatedParameterCache.TryGetBindingName(asset.GetType(), parameterName, out bindingName))
            {
                bindingName = GetAnimatedParameterBindingName_Internal(asset, parameterName);
                AnimatedParameterCache.SetBindingName(asset.GetType(), parameterName, bindingName);
            }

            return(bindingName);
        }
        public static bool IsParameterAnimatable(SerializedProperty property)
        {
            if (property == null)
            {
                return(false);
            }

            bool isAnimatable;

            if (!AnimatedParameterCache.TryGetIsPropertyAnimatable(property, out isAnimatable))
            {
                isAnimatable = IsParameterAnimatable_Internal(property);
                AnimatedParameterCache.SetIsPropertyAnimatable(property, isAnimatable);
            }

            return(isAnimatable);
        }