using System; using UnityEngine; namespace NaughtyAttributes.Test { public class ShowIfTest : MonoBehaviour { public bool show1; public bool show2; public ShowIfEnum enum1; [EnumFlags] public ShowIfEnumFlag enum2; [ShowIf(EConditionOperator.And, "show1", "show2")] [ReorderableList] public int[] showIfAll; [ShowIf(EConditionOperator.Or, "show1", "show2")] [ReorderableList] public int[] showIfAny; [ShowIf("enum1", ShowIfEnum.Case0)] [ReorderableList] public int[] showIfEnum; [ShowIf("enum2", ShowIfEnumFlag.Flag0)] [ReorderableList] public int[] showIfEnumFlag; [ShowIf("enum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] [ReorderableList] public int[] showIfEnumFlagMulti; public ShowIfNest1 nest1; } [System.Serializable] public class ShowIfNest1 { public bool show1; public bool show2; public ShowIfEnum enum1; [EnumFlags] public ShowIfEnumFlag enum2; public bool Show1 { get { return show1; } } public bool Show2 { get { return show2; } } public ShowIfEnum Enum1 { get { return enum1; } } public ShowIfEnumFlag Enum2 { get { return enum2; } } [ShowIf(EConditionOperator.And, "Show1", "Show2")] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int showIfAll; [ShowIf(EConditionOperator.Or, "Show1", "Show2")] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int showIfAny; [ShowIf("Enum1", ShowIfEnum.Case1)] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int showIfEnum; [ShowIf("Enum2", ShowIfEnumFlag.Flag0)] [AllowNesting] public int showIfEnumFlag; [ShowIf("Enum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] [AllowNesting] public int showIfEnumFlagMulti; public ShowIfNest2 nest2; } [System.Serializable] public class ShowIfNest2 { public bool show1; public bool show2; public ShowIfEnum enum1; [EnumFlags] public ShowIfEnumFlag enum2; public bool GetShow1() { return show1; } public bool GetShow2() { return show2; } public ShowIfEnum GetEnum1() { return enum1; } public ShowIfEnumFlag GetEnum2() { return enum2; } [ShowIf(EConditionOperator.And, "GetShow1", "GetShow2")] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 showIfAll = new Vector2(0.25f, 0.75f); [ShowIf(EConditionOperator.Or, "GetShow1", "GetShow2")] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 showIfAny = new Vector2(0.25f, 0.75f); [ShowIf("GetEnum1", ShowIfEnum.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 showIfEnum = new Vector2(0.25f, 0.75f); [ShowIf("GetEnum2", ShowIfEnumFlag.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 showIfEnumFlag; [ShowIf("GetEnum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.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 showIfEnumFlagMulti; } public enum ShowIfEnum { Case0, Case1, Case2 } [Flags] public enum ShowIfEnumFlag { Flag0 = 1, Flag1 = 2, Flag2 = 4, Flag3 = 8 } }