|
- #pragma once
- #include "common.hpp"
-
-
- namespace rack {
- namespace engine {
-
-
- struct Light {
- /** The square of the brightness.
- Unstable API. Use set/getBrightness().
- */
- float value = 0.f;
-
- /** Sets the brightness immediately with no light decay. */
- void setBrightness(float brightness) {
- value = (brightness > 0.f) ? std::pow(brightness, 2) : 0.f;
- }
-
- float getBrightness() {
- return std::sqrt(value);
- }
-
- /** Emulates light decay with slow fall but immediate rise. */
- void setSmoothBrightness(float brightness, float deltaTime) {
- float v = (brightness > 0.f) ? std::pow(brightness, 2) : 0.f;
- if (v < value) {
- // Fade out light
- const float lambda = 30.f;
- value += (v - value) * lambda * deltaTime;
- }
- else {
- // Immediately illuminate light
- value = v;
- }
- }
-
- /** Use `setSmoothBrightness(brightness, APP->engine->getSampleTime())` instead. */
- DEPRECATED void setBrightnessSmooth(float brightness, float frames = 1.f) {
- setSmoothBrightness(brightness, frames / 44100.f);
- }
- };
-
-
- } // namespace engine
- } // namespace rack
|