Code/Temperature.cs
namespace RotSoft.Lighting;
/// <summary>
/// A color temperature in kelvin, converted to a color via <see cref="TemperatureExtensions.ToColor(Temperature)"/>.
/// </summary>
public struct Temperature
{
/// <summary>Lowest valid temperature, in kelvin.</summary>
public const float MinTemperature = 1500f;
/// <summary>Highest valid temperature, in kelvin.</summary>
public const float MaxTemperature = 15000f;
/// <summary>Temperature in kelvin.</summary>
public float Kelvin { get; set; }
/// <summary>Creates a temperature from a kelvin value.</summary>
public Temperature( float kelvin )
{
Kelvin = kelvin;
}
/// <summary>Implicitly converts a kelvin value to a <see cref="Temperature"/>.</summary>
public static implicit operator Temperature( float kelvin ) => new( kelvin );
/// <summary>Implicitly converts a <see cref="Temperature"/> back to its kelvin value.</summary>
public static implicit operator float( Temperature temperature ) => temperature.Kelvin;
}