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);
}
}
}