rmv_bevy_testing_tools/traits/
time_controls.rs1use std::time::Duration;
2
3use bevy_internal::time::{Time, Virtual};
4
5use crate::prelude::TestApp;
6
7pub trait TimeControls {
8 fn is_paused(&self) -> bool;
9 fn pause(&mut self);
10 fn unpause(&mut self);
11 fn advance_time_to(&mut self, duration: Duration);
12 fn advance_time_by(&mut self, duration: Duration);
13}
14
15impl TimeControls for TestApp {
16 fn is_paused(&self) -> bool {
17 self.world()
18 .get_resource::<Time<Virtual>>()
19 .unwrap()
20 .is_paused()
21 }
22 fn pause(&mut self) {
23 self.world_mut()
24 .get_resource_mut::<Time<Virtual>>()
25 .unwrap()
26 .pause()
27 }
28 fn unpause(&mut self) {
29 self.world_mut()
30 .get_resource_mut::<Time<Virtual>>()
31 .unwrap()
32 .unpause()
33 }
34 fn advance_time_by(&mut self, duration: Duration) {
35 self.world_mut()
36 .get_resource_mut::<Time<Virtual>>()
37 .unwrap()
38 .advance_by(duration);
39 self.update();
40 }
41 fn advance_time_to(&mut self, duration: Duration) {
42 self.world_mut()
43 .get_resource_mut::<Time<Virtual>>()
44 .unwrap()
45 .advance_to(duration);
46 self.update();
47 }
48}