mirror of
https://github.com/esphome/esphome.git
synced 2025-08-03 00:47:47 +00:00
light2
This commit is contained in:
parent
825f3eee70
commit
5cf89f8594
@ -84,18 +84,19 @@ class LightColorValues {
|
||||
* @return The linearly interpolated LightColorValues.
|
||||
*/
|
||||
static LightColorValues lerp(const LightColorValues &start, const LightColorValues &end, float completion) {
|
||||
// Directly interpolate the raw values to avoid getter/setter overhead
|
||||
LightColorValues v;
|
||||
v.set_color_mode(end.color_mode_);
|
||||
v.set_state(std::lerp(start.get_state(), end.get_state(), completion));
|
||||
v.set_brightness(std::lerp(start.get_brightness(), end.get_brightness(), completion));
|
||||
v.set_color_brightness(std::lerp(start.get_color_brightness(), end.get_color_brightness(), completion));
|
||||
v.set_red(std::lerp(start.get_red(), end.get_red(), completion));
|
||||
v.set_green(std::lerp(start.get_green(), end.get_green(), completion));
|
||||
v.set_blue(std::lerp(start.get_blue(), end.get_blue(), completion));
|
||||
v.set_white(std::lerp(start.get_white(), end.get_white(), completion));
|
||||
v.set_color_temperature(std::lerp(start.get_color_temperature(), end.get_color_temperature(), completion));
|
||||
v.set_cold_white(std::lerp(start.get_cold_white(), end.get_cold_white(), completion));
|
||||
v.set_warm_white(std::lerp(start.get_warm_white(), end.get_warm_white(), completion));
|
||||
v.color_mode_ = end.color_mode_;
|
||||
v.state_ = std::lerp(start.state_, end.state_, completion);
|
||||
v.brightness_ = std::lerp(start.brightness_, end.brightness_, completion);
|
||||
v.color_brightness_ = std::lerp(start.color_brightness_, end.color_brightness_, completion);
|
||||
v.red_ = std::lerp(start.red_, end.red_, completion);
|
||||
v.green_ = std::lerp(start.green_, end.green_, completion);
|
||||
v.blue_ = std::lerp(start.blue_, end.blue_, completion);
|
||||
v.white_ = std::lerp(start.white_, end.white_, completion);
|
||||
v.color_temperature_ = std::lerp(start.color_temperature_, end.color_temperature_, completion);
|
||||
v.cold_white_ = std::lerp(start.cold_white_, end.cold_white_, completion);
|
||||
v.warm_white_ = std::lerp(start.warm_white_, end.warm_white_, completion);
|
||||
return v;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user