using UnityEngine; using System; /// /// Draws the field/property ONLY if the compared property compared by the comparison type with the value of comparedValue returns true. /// Based on: https://forum.unity.com/threads/draw-a-field-only-if-a-condition-is-met.448855/ /// [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = true)] public class DrawIfAttribute : PropertyAttribute { #region Fields public string comparedPropertyName { get; private set; } public object comparedValue { get; private set; } public DisablingType disablingType { get; private set; } public Comparator comparisonMethod { get; private set; } /// /// Types of comperisons. /// public enum DisablingType { ReadOnly = 2, DontDraw = 3 } public enum Comparator { Equal=0, NotEqual=1 } #endregion /// /// Only draws the field only if a condition is met. Supports enum and bools. /// /// The name of the property that is being compared (case sensitive). /// The value the property is being compared to. /// The type of disabling that should happen if the condition is NOT met. Defaulted to DisablingType.DontDraw. public DrawIfAttribute(string comparedPropertyName, object comparedValue, DisablingType disablingType = DisablingType.ReadOnly, Comparator comparisonMethod=Comparator.Equal) { this.comparedPropertyName = comparedPropertyName; this.comparedValue = comparedValue; this.disablingType = disablingType; this.comparisonMethod = comparisonMethod; } }