This commit is contained in:
J. Nick Koston 2025-07-26 21:32:34 -10:00
parent 29e61c8913
commit 28dbf3bbcc
No known key found for this signature in database

View File

@ -84,9 +84,11 @@ class LightColorValues {
* @return The linearly interpolated LightColorValues. * @return The linearly interpolated LightColorValues.
*/ */
static LightColorValues lerp(const LightColorValues &start, const LightColorValues &end, float completion) { static LightColorValues lerp(const LightColorValues &start, const LightColorValues &end, float completion) {
// Directly interpolate the raw values to avoid getter/setter overhead // Directly interpolate the raw values to avoid getter/setter overhead.
// Linear interpolation between two clamped values produces a clamped result, // This is safe because:
// so we can skip the setters which include redundant clamping logic // - All LightColorValues have their values clamped when set via the setters
// - std::lerp guarantees output is in the same range as inputs
// - Therefore the output doesn't need clamping, so we can skip the setters
LightColorValues v; LightColorValues v;
v.color_mode_ = end.color_mode_; v.color_mode_ = end.color_mode_;
v.state_ = std::lerp(start.state_, end.state_, completion); v.state_ = std::lerp(start.state_, end.state_, completion);