Implemented time stepping
This commit is contained in:
parent
f704ae67e0
commit
5b5e6c697a
2 changed files with 18 additions and 10 deletions
|
@ -45,7 +45,6 @@ class Engine:
|
|||
|
||||
def next(self, step_size: Decimal):
|
||||
"""Calculate light values for next step in time. Step size in seconds."""
|
||||
prev_time = self.render_time
|
||||
self.render_time += step_size
|
||||
|
||||
for t in self.tracks:
|
||||
|
@ -53,9 +52,8 @@ class Engine:
|
|||
continue
|
||||
|
||||
# Move keyframes forward
|
||||
while step_size > 0:
|
||||
# TODO
|
||||
pass
|
||||
t.step(step_size)
|
||||
# TODO: Interpolate values
|
||||
|
||||
def propagate(self):
|
||||
"""Forward new fixture states to APIs."""
|
||||
|
|
|
@ -104,17 +104,17 @@ class EngineFixture:
|
|||
"""Set value of fixture based on parameter."""
|
||||
match parameter:
|
||||
case Parameter.ON:
|
||||
self.on = value
|
||||
self.on = value # type: ignore
|
||||
case Parameter.HUE:
|
||||
self.hue = value
|
||||
self.hue = value # type: ignore
|
||||
case Parameter.BRIGHTNESS:
|
||||
self.brightness = value
|
||||
self.brightness = value # type: ignore
|
||||
case Parameter.SATURATION:
|
||||
self.saturation = value
|
||||
self.saturation = value # type: ignore
|
||||
case Parameter.TEMPERATURE:
|
||||
self.temperature = value
|
||||
self.temperature = value # type: ignore
|
||||
case Parameter.TOPIC:
|
||||
self.topic = value
|
||||
self.topic = value # type: ignore
|
||||
case _:
|
||||
logging.warning(
|
||||
f"Unknown parameter [{parameter}] with value [{value}] for fixture id [{self.fixture.id}]."
|
||||
|
@ -234,6 +234,16 @@ class EngineTrack:
|
|||
prev_time = curr_time
|
||||
curr_time = next.time
|
||||
|
||||
def step(self, step_size: Decimal):
|
||||
"""Step keyframes forward by given step."""
|
||||
while self.next and step_size > 0:
|
||||
self.next.delta -= step_size
|
||||
if self.next.delta >= 0:
|
||||
return
|
||||
|
||||
self.previous = self.keyframes.pop(0)
|
||||
step_size = self.previous.delta.copy_abs()
|
||||
|
||||
|
||||
@dataclass_json
|
||||
@dataclass
|
||||
|
|
Loading…
Reference in a new issue