|  | #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;
	}
	float getBrightness() {
		return value;
	}
	/** Emulates light decay with slow fall but immediate rise. */
	void setBrightnessSmooth(float brightness, float deltaTime) {
		if (brightness < value) {
			// Fade out light
			const float lambda = 30.f;
			value += (brightness - value) * lambda * deltaTime;
		}
		else {
			// Immediately illuminate light
			value = brightness;
		}
	}
	/** Alias for setBrightnessSmooth() */
	void setSmoothBrightness(float brightness, float deltaTime) {
		setBrightnessSmooth(brightness, deltaTime);
	}
	/** Use `setBrightnessSmooth(brightness, sampleTime * frames)` instead. */
	DEPRECATED void setBrightnessSmooth(float brightness, int frames = 1) {
		setSmoothBrightness(brightness, frames / 44100.f);
	}
};
} // namespace engine
} // namespace rack
 |