/// Simple time tracking resource for ECS use bevy_ecs::prelude::Resource; use std::time::Duration; #[derive(Debug, Clone, Resource)] pub struct Time { delta: Duration, elapsed: Duration, } impl Time { pub fn new() -> Self { Self { delta: Duration::ZERO, elapsed: Duration::ZERO } } pub fn update(&mut self, delta: Duration) { self.delta = delta; self.elapsed += delta; } pub fn delta(&self) -> Duration { self.delta } pub fn delta_secs(&self) -> f32 { self.delta.as_secs_f32() } pub fn elapsed(&self) -> Duration { self.elapsed } pub fn elapsed_secs(&self) -> f32 { self.elapsed.as_secs_f32() } } impl Default for Time { fn default() -> Self { Self::new() } } /// Fixed timestep time resource #[derive(Debug, Clone, Resource)] pub struct FixedTime { timestep: Duration, } impl FixedTime { pub fn from_seconds(seconds: f64) -> Self { Self { timestep: Duration::from_secs_f64(seconds) } } pub fn timestep(&self) -> Duration { self.timestep } }