module-inspector/Editor/AccessModifiers/HideFieldAttributeDrawer.cs

22 lines
887 B
C#

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