public static bool BehaviourPropertyIsVisible(MonoBehaviour behaviour, string propertyName, DrawIfBaseAttribute 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], instance.inverse, instance.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)); }
private void Initialize(SerializedProperty property) { if (instance == null) { instance = base.attribute as DrawIfBaseAttribute; } if (instance == null) { return; } if (!conditionalToTarget.ContainsKey(property)) { conditionalToTarget.Add(property, ConditionalFieldUtility.FindRelativeProperty(property, instance.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 (HaveMultipleAttributes()) { multipleAttributes = true; GetPropertyDrawerType(property); } else if (!fieldInfo.FieldType.Module.ScopeName.Equals(typeof(int).Module.ScopeName)) { specialType = true; GetTypeDrawerType(property); } customDrawersCached = true; }