using System; using UnityEngine; namespace NaughtyAttributes.Test { public class EnableIfTest : MonoBehaviour { public bool enable1; public bool enable2; public EnableIfEnum enum1; [EnumFlags] public EnableIfEnumFlag enum2; [EnableIf(EConditionOperator.And, "enable1", "enable2")] [ReorderableList] public int[] enableIfAll; [EnableIf(EConditionOperator.Or, "enable1", "enable2")] [ReorderableList] public int[] enableIfAny; [EnableIf("enum1", EnableIfEnum.Case0)] [ReorderableList] public int[] enableIfEnum; [EnableIf("enum2", EnableIfEnumFlag.Flag0)] [ReorderableList] public int[] enableIfEnumFlag; [EnableIf("enum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] [ReorderableList] public int[] enableIfEnumFlagMulti; public EnableIfNest1 nest1; } [System.Serializable] public class EnableIfNest1 { public bool enable1; public bool enable2; public EnableIfEnum enum1; [EnumFlags] public EnableIfEnumFlag enum2; public bool Enable1 { get { return enable1; } } public bool Enable2 { get { return enable2; } } public EnableIfEnum Enum1 { get { return enum1; } } public EnableIfEnumFlag Enum2 { get { return enum2; } } [EnableIf(EConditionOperator.And, "Enable1", "Enable2")] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int enableIfAll; [EnableIf(EConditionOperator.Or, "Enable1", "Enable2")] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int enableIfAny; [EnableIf("Enum1", EnableIfEnum.Case1)] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int enableIfEnum; [EnableIf("Enum2", EnableIfEnumFlag.Flag0)] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int enableIfEnumFlag; [EnableIf("Enum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] [AllowNesting] // Because it's nested we need to explicitly allow nesting public int enableIfEnumFlagMulti; public EnableIfNest2 nest2; } [System.Serializable] public class EnableIfNest2 { public bool enable1; public bool enable2; public EnableIfEnum enum1; [EnumFlags] public EnableIfEnumFlag enum2; public bool GetEnable1() { return enable1; } public bool GetEnable2() { return enable2; } public EnableIfEnum GetEnum1() { return enum1; } public EnableIfEnumFlag GetEnum2() { return enum2; } [EnableIf(EConditionOperator.And, "GetEnable1", "GetEnable2")] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); [EnableIf(EConditionOperator.Or, "GetEnable1", "GetEnable2")] [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); [EnableIf("GetEnum1", EnableIfEnum.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 enableIfEnum = new Vector2(0.25f, 0.75f); [EnableIf("GetEnum2", EnableIfEnumFlag.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 enableIfEnumFlag; [EnableIf("GetEnum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.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 enableIfEnumFlagMulti; } [System.Serializable] public enum EnableIfEnum { Case0, Case1, Case2 } [Flags] public enum EnableIfEnumFlag { Flag0 = 1, Flag1 = 2, Flag2 = 4, Flag3 = 8 } }