public static bool BehaviourPropertyIsVisible(MonoBehaviour behaviour, string propertyName,
                                                      ConditionalFieldAttribute appliedAttribute)
        {
            if (string.IsNullOrEmpty(appliedAttribute.FieldToCheck))
            {
                return(true);
            }

            var so             = new SerializedObject(behaviour);
            var property       = so.FindProperty(propertyName);
            var targetProperty = ConditionalFieldUtility.FindRelativeProperty(property, appliedAttribute.FieldToCheck);

            return(ConditionalFieldUtility.PropertyIsVisible(targetProperty, appliedAttribute.Inverse,
                                                             appliedAttribute.CompareValues));
        }
        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
        {
            Initialize(property);

            _toShow = ConditionalFieldUtility.PropertyIsVisible(_conditionalToTarget[property], _attribute.Inverse,
                                                                _attribute.CompareValues);
            if (!_toShow)
            {
                return(0);
            }

            if (_genericDrawerInstance != null)
            {
                return(_genericDrawerInstance.GetPropertyHeight(property, label));
            }
            if (_genericTypeDrawerInstance != null)
            {
                return(_genericTypeDrawerInstance.GetPropertyHeight(property, label));
            }
            return(EditorGUI.GetPropertyHeight(property));
        }