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)); }
private void Initialize(SerializedProperty property) { if (_attribute == null) { _attribute = attribute as ConditionalFieldAttribute; } if (_attribute == null) { return; } if (!_conditionalToTarget.ContainsKey(property)) { _conditionalToTarget.Add(property, ConditionalFieldUtility.FindRelativeProperty(property, _attribute.FieldToCheck)); } if (_customDrawersCached) { return; } if (_typesCache == null) { _typesCache = AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()) .Where(x => typeof(PropertyDrawer).IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract); } if (fieldInfo.GetCustomAttributes(typeof(PropertyAttribute), false).Count() > 1) { _multipleAttributes = true; GetPropertyDrawerType(property); } else if (!fieldInfo.FieldType.Module.ScopeName.Equals(typeof(int).Module.ScopeName)) { _specialType = true; GetTypeDrawerType(property); } _customDrawersCached = true; }