using UnityEditor; namespace Module.Inspector.Editor { [CustomPropertyDrawer(typeof(ShowField))] internal sealed class DrawerShowField : AccessModifierPropertyDrawer { public override EAccessType GetAccessType(AccessModifierPropertyAttribute attribute, SerializedProperty property, EAccessType currentAccessType) { if (currentAccessType != EAccessType.Hidden && !GetVisibleValue(attribute, property)) currentAccessType = EAccessType.Hidden; return currentAccessType; } private static bool GetVisibleValue(AccessModifierPropertyAttribute attribute, SerializedProperty sp) { var att = (ShowField)attribute; return sp.IsSiblingValue(att.fieldName, att.fieldValue, att.useFieldValue); } } }