Skip to main content

box2d_rs/
b2_timer.rs

1use std::time::Instant;
2
3pub struct B2timer {
4	start: Instant,
5}
6
7impl Default for B2timer
8{
9	/// Constructor
10	fn default() -> Self {
11		B2timer { start: Instant::now() }
12	}
13}
14
15/// Timer for profiling. This has platform specific code and may
16/// not work on every platform.
17impl B2timer {
18
19	/// reset the timer.
20	pub fn reset(&mut self) {
21		self.start = Instant::now();
22	}
23
24	/// Get the time since construction or the last reset.
25	pub fn get_milliseconds(&self) -> f32 {
26		let elapsed = self.start.elapsed();
27		let nanos = elapsed.subsec_nanos() as u64;
28		let ms = 1000.0 * elapsed.as_secs() as f32 + nanos as f32/(1000.0 * 1000.0);
29		ms as f32
30	}
31	pub fn precise_time_ns(&self) -> u64 {
32		let elapsed = self.start.elapsed();
33		let nanos = elapsed.subsec_nanos() as u64;
34		let ns = 1000*1000*1000 * elapsed.as_secs() + nanos;
35		ns
36	}
37}