sailor 0.1.0

A sailing navigation application.
pub struct Stats {
    stamp: std::time::Instant,
    last_frametimes: std::collections::VecDeque<u64>,
    frames: u64,
}

impl Stats {
    pub fn new() -> Self {
        Self {
            stamp: std::time::Instant::now(),
            last_frametimes: {
                let mut dq = std::collections::VecDeque::new();
                for _ in 0..30 {
                    dq.push_back(0);
                }
                dq
            },
            frames: 0,
        }
    }

    pub fn capture_frame(&mut self) {
        self.last_frametimes.pop_front();
        self.last_frametimes.push_back(self.stamp.elapsed().as_micros() as u64);
        self.frames += 1;
        self.stamp = std::time::Instant::now();
    }

    pub fn get_average(&self) -> f64 {
        self.last_frametimes.iter().sum::<u64>() as f64 / 30.0
    }
}