com_croftsoft_lib_animation/metronome/
simple.rs1use super::Metronome;
15
16pub struct SimpleMetronome {
17 pub period_millis: f64,
18 pub time_millis_next_tick: f64,
19}
20
21impl Metronome for SimpleMetronome {
22 fn reset(
23 &mut self,
24 current_time_millis: f64,
25 ) {
26 self.time_millis_next_tick = current_time_millis + self.period_millis
27 }
28
29 fn set_period_millis(
30 &mut self,
31 period_millis: f64,
32 ) {
33 self.period_millis = period_millis;
34 }
35
36 fn set_time_millis_next_tick(
37 &mut self,
38 time_millis_next_tick: f64,
39 ) {
40 self.time_millis_next_tick = time_millis_next_tick;
41 }
42
43 fn tick(
44 &mut self,
45 current_time_millis: f64,
46 ) -> bool {
47 if current_time_millis < self.time_millis_next_tick {
48 return false;
49 }
50 self.time_millis_next_tick = current_time_millis + self.period_millis;
51 true
52 }
53}