using UnityEngine; using System; using System.Collections.Generic; namespace RootMotion { public enum ShowIfMode { Disabled = 0, Hidden = 1 } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = true)] public class ShowIfAttribute : PropertyAttribute { public string propName { get; protected set; } public object propValue { get; protected set; } public object otherPropValue { get; protected set; } public bool indent { get; private set; } public ShowIfMode mode { get; protected set; } public ShowIfAttribute(string propertyName, object propertyValue = null, object otherPropertyValue = null, bool indent = false, ShowIfMode mode = ShowIfMode.Hidden) { this.propName = propertyName; this.propValue = propertyValue; this.otherPropValue = otherPropertyValue; this.indent = indent; this.mode = mode; } } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = true)] public class ShowRangeIfAttribute : ShowIfAttribute { public float min { get; private set; } public float max { get; private set; } public ShowRangeIfAttribute(float min, float max, string propertyName, object propertyValue = null, object otherPropertyValue = null, bool indent = false, ShowIfMode mode = ShowIfMode.Hidden) : base (propertyName, propertyValue, otherPropertyValue, indent, mode) { this.min = min; this.max = max; } } /// /// Large header attribute for Editor. /// public class ShowLargeHeaderIf : ShowIfAttribute { public string name; public string color = "white"; public ShowLargeHeaderIf(string name, string propertyName, object propertyValue = null, object otherPropertyValue = null, bool indent = false, ShowIfMode mode = ShowIfMode.Hidden) : base(propertyName, propertyValue, otherPropertyValue, indent, mode) { this.name = name; this.color = "white"; } public ShowLargeHeaderIf(string name, string color, string propertyName, object propertyValue = null, object otherPropertyValue = null, bool indent = false, ShowIfMode mode = ShowIfMode.Hidden) : base(propertyName, propertyValue, otherPropertyValue, indent, mode) { this.name = name; this.color = color; } } /// /// Large header attribute for Editor. /// public class LargeHeader : PropertyAttribute { public string name; public string color = "white"; public LargeHeader(string name) { this.name = name; this.color = "white"; } public LargeHeader(string name, string color) { this.name = name; this.color = color; } } }