namespace Zinnia.Data.Type { using System; using UnityEngine; using Zinnia.Extension; /// /// Specifies a valid range between a lower and upper float value limit. /// [Serializable] public struct FloatRange { /// /// The inclusive minimum value of the range. /// [Tooltip("The inclusive minimum value of the range.")] public float minimum; /// /// The inclusive maximum value of the range. /// [Tooltip("The inclusive maximum value of the range.")] public float maximum; /// /// Shorthand for writing FloatRange(float.MinValue, float.MaxValue). /// public static readonly FloatRange MinMax = new FloatRange(float.MinValue, float.MaxValue); /// /// Constructs a new range with the given minimum and maximum values. /// /// The minimum value for the range. /// The maximum value for the range. public FloatRange(float minimum, float maximum) { this.minimum = minimum; this.maximum = maximum; } /// /// Constructs a new range from a given . /// /// The range data. public FloatRange(IntRange range) { minimum = range.minimum; maximum = range.maximum; } /// /// Constructs a new range from a given using the value as the minimum value and the value as the maximum value. /// /// The range data. public FloatRange(Vector2 range) { minimum = range.x; maximum = range.y; } /// public override string ToString() { string[] titles = new string[] { "minimum", "maximum" }; object[] values = new object[] { minimum, maximum }; return StringExtensions.FormatForToString(titles, values); } /// /// Determines if the given value is contained within the set range. /// /// The value to check for. /// if the value is found within the range. public bool Contains(float value) { return value >= minimum && value <= maximum; } /// /// Converts to a /// /// The converted value. public Vector2 ToVector2() { return new Vector2(minimum, maximum); } } }