def test_extending_all_events(): def all_extension(event): event.test_value = "pursuedpybear" @dataclasses.dataclass class TestEvent: pass class TestScene(BaseScene): def on_update(self, event, signal): assert event.test_value == "pursuedpybear" def on_mouse_motion(self, event, signal): assert event.test_value == "pursuedpybear" def on_test_event(self, event, signal): assert event.test_value == "pursuedpybear" ge = GameEngine(TestScene) ge.start() # We need test scene instantiated. ge.register(..., all_extension) ge.signal(events.Update(0.01)) ge.publish() ge.signal(events.MouseMotion(Vector(0, 0), Vector(0, 0), Vector(0, 1), [])) ge.publish() ge.signal(TestEvent()) ge.publish()
def activate(self, engine): if self.last_tick is None: self.last_tick = time.time() this_tick = time.time() self.accumulated_time += this_tick - self.last_tick self.last_tick = this_tick while self.accumulated_time >= self.time_step: self.accumulated_time += -self.time_step yield events.Update(self.time_step)
def on_idle(self, idle_event: events.Idle, signal): if self.last_tick is None: self.last_tick = time.monotonic() this_tick = time.monotonic() self.accumulated_time += this_tick - self.last_tick self.last_tick = this_tick while self.accumulated_time >= self.time_step: # This might need to change for the Idle event system to signal _only_ once per idle event. self.accumulated_time += -self.time_step signal(events.Update(self.time_step))
def test_collider_on_update(basic_collider: Collider, scene: BaseScene, expected): basic_collider.set_running(scene) basic_collider.on_update(events.Update(0.15, scene), lambda x: None) assert basic_collider.primed == expected