public bool ShouldAssign(PropertyInfo property, object onObject)
        {
            SteamVR_Action action = GetAction((MonoBehaviour)onObject);

            if (action != null)
            {
                var currentAction = property.GetValue(onObject, null);

                if (currentAction == null || overrideExistingOnGeneration)
                {
                    if (action.GetType() != property.PropertyType)
                    {
                        Debug.LogWarning("[SteamVR] Could not assign default action for " + ((MonoBehaviour)onObject).gameObject.name + "::" + ((MonoBehaviour)onObject).name + "::" + property.Name
                                         + ". Expected type: " + property.PropertyType.Name + ", found action type: " + action.GetType().Name);
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    Debug.LogWarning("[SteamVR] Not assigning default because current action is not null. Could not assign default action for " + ((MonoBehaviour)onObject).gameObject.name + "::" + ((MonoBehaviour)onObject).name + "::" + property.Name
                                     + ". Expected type: " + property.PropertyType.Name + ", found action type: " + action.GetType().Name + ". " + ((SteamVR_Action)currentAction).fullPath);
                }
            }

            return(false);
        }
        public bool ShouldAssign(FieldInfo field, object onObject)
        {
            SteamVR_Action action = GetAction((MonoBehaviour)onObject);

            if (action != null)
            {
                var currentAction = field.GetValue(onObject);

                if (currentAction == null || overrideExistingOnGeneration)
                {
                    if (action.GetType() != field.FieldType)
                    {
                        Debug.LogWarning("[SteamVR] Could not assign default action for " + ((MonoBehaviour)onObject).gameObject.name + "::" + ((MonoBehaviour)onObject).name + "::" + field.Name
                                         + ". Expected type: " + field.FieldType.Name + ", found action type: " + action.GetType().Name);
                    }
                    else
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }