blob: 33a2fc863d65e1c5dd5668e4ff66686202a0da46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use std::time::{Duration, Instant};
use ecs::component::local::Local;
use ecs::sole::Single;
use ecs::{Component, Sole};
#[derive(Debug, Clone, Default, Sole)]
pub struct DeltaTime
{
pub duration: Duration,
}
#[derive(Debug, Clone, Default, Component)]
pub struct LastUpdate
{
pub time: Option<Instant>,
}
/// Updates the current delta time.
///
/// # Panics
/// Will panic if no delta time component exists.
pub fn update(mut delta_time: Single<DeltaTime>, mut last_update: Local<LastUpdate>)
{
let current_time = Instant::now();
if let Some(last_update_time) = last_update.time {
delta_time.duration = current_time.duration_since(last_update_time);
}
last_update.time = Some(current_time);
}
|