using System.Reflection; using Module.Inspector.Editor.Utilities; using UnityEngine; namespace Module.Inspector.Editor { [CustomMethodDrawer(typeof(ShowMethod))] internal sealed class DrawerShowMethod : AccessModifierMethodDrawer { public override EAccessType GetAccessType(AccessModifierMethodAttribute attribute, Object target, MethodInfo methodInfo, EAccessType currentAccessType) { if (currentAccessType != EAccessType.Hidden && !GetVisibleValue(attribute, target)) currentAccessType = EAccessType.Hidden; return currentAccessType; } private static bool GetVisibleValue(AccessModifierMethodAttribute attribute, Object target) { var att = (ShowMethod)attribute; return EditorSerializedPropertyUtility.IsValue(target, att.fieldName, att.fieldValue, att.useFieldValue); } } }