flatland-play-loop 0.2.5

Engine-agnostic Flatland3 play session frame logic (gfx client)
Documentation
//! Movement intent interval (30 Hz sim, client sends at ~20 Hz).

use std::time::{Duration, Instant};

pub const MOVEMENT_SEND_INTERVAL_MS: u128 = 50;

pub fn movement_interval_elapsed(sent_at: Instant, now: Instant) -> bool {
    now.duration_since(sent_at) >= Duration::from_millis(MOVEMENT_SEND_INTERVAL_MS as u64)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn interval_respects_50ms() {
        let start = Instant::now();
        assert!(!movement_interval_elapsed(start, start));
        let later = start + Duration::from_millis(49);
        assert!(!movement_interval_elapsed(start, later));
        let ok = start + Duration::from_millis(50);
        assert!(movement_interval_elapsed(start, ok));
    }
}