mirror of
https://github.com/Xevion/smart-rgb.git
synced 2025-12-05 23:16:23 -06:00
59 lines
1.1 KiB
Rust
59 lines
1.1 KiB
Rust
/// 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
|
|
}
|
|
}
|