mirror of https://github.com/Leinnan/doppler.git
Fix frame counter
This commit is contained in:
parent
3fb9772db2
commit
07c7b4193f
|
|
@ -17,6 +17,7 @@ pub struct TimeStep {
|
||||||
delta_time: f32,
|
delta_time: f32,
|
||||||
frame_count: u32,
|
frame_count: u32,
|
||||||
frame_time: f32,
|
frame_time: f32,
|
||||||
|
last_frame_count: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TimeStep {
|
impl TimeStep {
|
||||||
|
|
@ -26,30 +27,35 @@ impl TimeStep {
|
||||||
delta_time: 0.0,
|
delta_time: 0.0,
|
||||||
frame_count: 0,
|
frame_count: 0,
|
||||||
frame_time: 0.0,
|
frame_time: 0.0,
|
||||||
|
last_frame_count: 42,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn delta(&mut self) -> f32 {
|
pub fn update(&mut self) {
|
||||||
|
// delta
|
||||||
let current_time = Instant::now();
|
let current_time = Instant::now();
|
||||||
let delta = current_time.duration_since(self.last_time).as_micros() as f32 * 0.001;
|
let delta = current_time.duration_since(self.last_time).as_micros() as f32 * 0.001;
|
||||||
self.last_time = current_time;
|
self.last_time = current_time;
|
||||||
self.delta_time = delta;
|
self.delta_time = delta;
|
||||||
delta
|
|
||||||
|
// frame counter
|
||||||
|
self.frame_count += 1;
|
||||||
|
self.frame_time += self.delta_time;
|
||||||
|
// per second
|
||||||
|
if self.frame_time >= 1000.0 {
|
||||||
|
self.last_frame_count = self.frame_count;
|
||||||
|
self.frame_count = 0;
|
||||||
|
self.frame_time = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn delta(&self) -> f32 {
|
||||||
|
self.delta_time
|
||||||
}
|
}
|
||||||
|
|
||||||
// provides the framerate in FPS
|
// provides the framerate in FPS
|
||||||
pub fn frame_rate(&mut self) -> Option<u32> {
|
pub fn frame_rate(&self) -> u32 {
|
||||||
self.frame_count += 1;
|
self.last_frame_count
|
||||||
self.frame_time += self.delta_time;
|
|
||||||
let tmp;
|
|
||||||
// per second
|
|
||||||
if self.frame_time >= 1000.0 {
|
|
||||||
tmp = self.frame_count;
|
|
||||||
self.frame_count = 0;
|
|
||||||
self.frame_time = 0.0;
|
|
||||||
return Some(tmp);
|
|
||||||
}
|
|
||||||
None
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -202,8 +208,8 @@ impl Engine {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Event::MainEventsCleared => {
|
Event::MainEventsCleared => {
|
||||||
let delta = timestep.delta();
|
timestep.update();
|
||||||
client.update(delta);
|
client.update(timestep.delta());
|
||||||
// other application-specific logic
|
// other application-specific logic
|
||||||
#[cfg(feature = "imgui_inspect")]
|
#[cfg(feature = "imgui_inspect")]
|
||||||
platform
|
platform
|
||||||
|
|
@ -283,7 +289,7 @@ impl Engine {
|
||||||
let ui = imgui.frame();
|
let ui = imgui.frame();
|
||||||
client.debug_draw(&ui);
|
client.debug_draw(&ui);
|
||||||
use imgui::*;
|
use imgui::*;
|
||||||
let fps = timestep.frame_rate().unwrap_or(0u32);
|
let fps = timestep.frame_rate();
|
||||||
let size = [250.0, 110.0];
|
let size = [250.0, 110.0];
|
||||||
let offset = 20.0;
|
let offset = 20.0;
|
||||||
Window::new(im_str!("EngineInfo"))
|
Window::new(im_str!("EngineInfo"))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue