using System; using UnityEngine; namespace NaughtyAttributes.Test { public class HideIfTest : MonoBehaviour { public bool hide1; public bool hide2; public HideIfEnum enum1; [EnumFlags] public HideIfEnumFlag enum2; [HideIf(EConditionOperator.And, "hide1", "hide2")] [ReorderableList] public int[] hideIfAll; [HideIf(EConditionOperator.Or, "hide1", "hide2")] [ReorderableList] public int[] hideIfAny; [HideIf("enum1", HideIfEnum.Case0)] [ReorderableList] public int[] hideIfEnum; [HideIf("enum2", HideIfEnumFlag.Flag0)] [ReorderableList] public int[] hideIfEnumFlag; [HideIf("enum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] [ReorderableList] public int[] hideIfEnumFlagMulti; public HideIfNest1 nest1; } [System.Serializable] public class HideIfNest1 { public bool hide1; public bool hide2; public HideIfEnum enum1; [EnumFlags] public HideIfEnumFlag enum2; public bool Hide1 { get { return hide1; } } public bool Hide2 { get { return hide2; } } public HideIfEnum Enum1 { get { return enum1; } } public HideIfEnumFlag Enum2 { get { return enum2; } } [HideIf(EConditionOperator.And, "Hide1", "Hide2")] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int hideIfAll; [HideIf(EConditionOperator.Or, "Hide1", "Hide2")] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int hideIfAny; [HideIf("Enum1", HideIfEnum.Case1)] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int hideIfEnum; [HideIf("Enum2", HideIfEnumFlag.Flag0)] [AllowNesting] public int hideIfEnumFlag; [HideIf("Enum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] [AllowNesting] public int hideIfEnumFlagMulti; public HideIfNest2 nest2; } [System.Serializable] public class HideIfNest2 { public bool hide1; public bool hide2; public HideIfEnum enum1; [EnumFlags] public HideIfEnumFlag enum2; public bool GetHide1() { return hide1; } public bool GetHide2() { return hide2; } public HideIfEnum GetEnum1() { return enum1; } public HideIfEnumFlag GetEnum2() { return enum2; } [HideIf(EConditionOperator.And, "GetHide1", "GetHide2")] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 hideIfAll = new Vector2(0.25f, 0.75f); [HideIf(EConditionOperator.Or, "GetHide1", "GetHide2")] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 hideIfAny = new Vector2(0.25f, 0.75f); [HideIf("GetEnum1", HideIfEnum.Case2)] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 hideIfEnum = new Vector2(0.25f, 0.75f); [HideIf("GetEnum2", HideIfEnumFlag.Flag0)] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 hideIfEnumFlag; [HideIf("GetEnum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 hideIfEnumFlagMulti; } public enum HideIfEnum { Case0, Case1, Case2 } [Flags] public enum HideIfEnumFlag { Flag0 = 1, Flag1 = 2, Flag2 = 4, Flag3 = 8 } }