Fixed #1: Weird easing behaviour
This commit is contained in:
parent
4e9601a71e
commit
c93d12abd8
3
TODO
3
TODO
@ -1,3 +0,0 @@
|
||||
1. Add an "ease" option to the static mode
|
||||
other mode to static: from 0
|
||||
static to static: depends on current brightness
|
@ -35,11 +35,14 @@ void StaticMode::tick(IStairs* stairs, uint32_t currentTime)
|
||||
if (this->easeState == None)
|
||||
return;
|
||||
|
||||
this->currentBrightness = (currentTime - this->easeStartTime) * ((this->parameters.brightness - this->easeStartBrightness) / this->parameters.easeTime);
|
||||
uint32_t elapsedTime = currentTime - this->easeStartTime;
|
||||
uint32_t diff = this->easeState == Up ? this->parameters.brightness - this->easeStartBrightness : this->easeStartBrightness - this->parameters.brightness;
|
||||
uint32_t delta = (diff * elapsedTime) / this->parameters.easeTime;
|
||||
|
||||
this->currentBrightness = this->easeState == Up ? this->easeStartBrightness + delta : this->easeStartBrightness - delta;
|
||||
|
||||
|
||||
if ((this->easeState == Up && this->currentBrightness >= this->parameters.brightness) ||
|
||||
(this->easeState == Down && this->currentBrightness <= this->parameters.brightness))
|
||||
if (elapsedTime >= this->parameters.easeTime)
|
||||
{
|
||||
this->currentBrightness = this->parameters.brightness;
|
||||
this->easeState = None;
|
||||
|
Loading…
Reference in New Issue
Block a user