Lapin Raving
7460b74c15
- remove all warning about unused function and variable. - adding draw figure to wait_space sequence
48 lines
1.5 KiB
Rust
48 lines
1.5 KiB
Rust
#[allow(unused)]
|
|
use log::{debug, warn};
|
|
use std::thread;
|
|
use std::time::{Duration, Instant};
|
|
|
|
/// Converts helios Geometry to Helios
|
|
#[allow(dead_code)]
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct Framerate {
|
|
start: Instant,
|
|
prev_trace_time: Instant,
|
|
framerate: u8,
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
impl Framerate {
|
|
pub fn new(framerate: u8) -> Result<Self, Box<dyn std::error::Error>> {
|
|
Ok(Framerate {
|
|
start: Instant::now(),
|
|
prev_trace_time: Instant::now(),
|
|
framerate,
|
|
})
|
|
}
|
|
pub fn handle_time(&mut self) -> Result<f64, Box<dyn std::error::Error>> {
|
|
let frame_time = 1000000000 / self.framerate as u128;
|
|
let now = Instant::now();
|
|
// How long since last loop ?
|
|
let nanotime_spent = self.prev_trace_time.elapsed().as_nanos();
|
|
// Diw it go too fast? If so : sleep a bit
|
|
if frame_time > nanotime_spent {
|
|
let nanotime_towait = frame_time - nanotime_spent;
|
|
let dur = Duration::new(0, (nanotime_towait as f32 * 0.9) as u32);
|
|
//debug!( "{:?} - {:?} : {:?}", nanotime_towait, self.prev_trace_time, now);
|
|
thread::sleep(dur);
|
|
//debug!("Framerate OK");
|
|
} else {
|
|
//warn!(
|
|
// "Frame slower than expected {:?} > {:?}",
|
|
// nanotime_spent, frame_time,
|
|
//);
|
|
}
|
|
|
|
let time_from_begin = self.start.elapsed().as_nanos() as f64 / 1000000000.;
|
|
self.prev_trace_time = now;
|
|
Ok(time_from_begin)
|
|
}
|
|
}
|