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;

}