Made Time::time_since_startup return from last tick. (#3264)
Also added unit tests for it. # Objective - Fixes #3259 ## Solution - As discussed in #3259 Co-authored-by: Alex Helfet <alex.helfet@gmail.com>
This commit is contained in:
parent
a636145d90
commit
5e516ab398
@ -9,6 +9,7 @@ pub struct Time {
|
|||||||
delta_seconds_f64: f64,
|
delta_seconds_f64: f64,
|
||||||
delta_seconds: f32,
|
delta_seconds: f32,
|
||||||
seconds_since_startup: f64,
|
seconds_since_startup: f64,
|
||||||
|
time_since_startup: Duration,
|
||||||
startup: Instant,
|
startup: Instant,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,6 +21,7 @@ impl Default for Time {
|
|||||||
startup: Instant::now(),
|
startup: Instant::now(),
|
||||||
delta_seconds_f64: 0.0,
|
delta_seconds_f64: 0.0,
|
||||||
seconds_since_startup: 0.0,
|
seconds_since_startup: 0.0,
|
||||||
|
time_since_startup: Duration::from_secs(0),
|
||||||
delta_seconds: 0.0,
|
delta_seconds: 0.0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,8 +40,8 @@ impl Time {
|
|||||||
self.delta_seconds = self.delta.as_secs_f32();
|
self.delta_seconds = self.delta.as_secs_f32();
|
||||||
}
|
}
|
||||||
|
|
||||||
let duration_since_startup = instant - self.startup;
|
self.time_since_startup = instant - self.startup;
|
||||||
self.seconds_since_startup = duration_since_startup.as_secs_f64();
|
self.seconds_since_startup = self.time_since_startup.as_secs_f64();
|
||||||
self.last_update = Some(instant);
|
self.last_update = Some(instant);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +63,7 @@ impl Time {
|
|||||||
self.delta_seconds_f64
|
self.delta_seconds_f64
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The time since startup in seconds
|
/// The time from startup to the last update in seconds
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn seconds_since_startup(&self) -> f64 {
|
pub fn seconds_since_startup(&self) -> f64 {
|
||||||
self.seconds_since_startup
|
self.seconds_since_startup
|
||||||
@ -79,8 +81,10 @@ impl Time {
|
|||||||
self.last_update
|
self.last_update
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The ['Duration'] from startup to the last update
|
||||||
|
#[inline]
|
||||||
pub fn time_since_startup(&self) -> Duration {
|
pub fn time_since_startup(&self) -> Duration {
|
||||||
Instant::now() - self.startup
|
self.time_since_startup
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,6 +114,7 @@ mod tests {
|
|||||||
assert_eq!(time.startup(), start_instant);
|
assert_eq!(time.startup(), start_instant);
|
||||||
assert_eq!(time.delta_seconds_f64(), 0.0);
|
assert_eq!(time.delta_seconds_f64(), 0.0);
|
||||||
assert_eq!(time.seconds_since_startup(), 0.0);
|
assert_eq!(time.seconds_since_startup(), 0.0);
|
||||||
|
assert_eq!(time.time_since_startup(), Duration::from_secs(0));
|
||||||
assert_eq!(time.delta_seconds(), 0.0);
|
assert_eq!(time.delta_seconds(), 0.0);
|
||||||
|
|
||||||
// Update `time` and check results
|
// Update `time` and check results
|
||||||
@ -125,6 +130,10 @@ mod tests {
|
|||||||
time.seconds_since_startup(),
|
time.seconds_since_startup(),
|
||||||
(first_update_instant - start_instant).as_secs_f64()
|
(first_update_instant - start_instant).as_secs_f64()
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
time.time_since_startup(),
|
||||||
|
(first_update_instant - start_instant)
|
||||||
|
);
|
||||||
assert_eq!(time.delta_seconds, 0.0);
|
assert_eq!(time.delta_seconds, 0.0);
|
||||||
|
|
||||||
// Update `time` again and check results
|
// Update `time` again and check results
|
||||||
@ -142,6 +151,10 @@ mod tests {
|
|||||||
time.seconds_since_startup(),
|
time.seconds_since_startup(),
|
||||||
(second_update_instant - start_instant).as_secs_f64()
|
(second_update_instant - start_instant).as_secs_f64()
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
time.time_since_startup(),
|
||||||
|
(second_update_instant - start_instant)
|
||||||
|
);
|
||||||
assert_eq!(time.delta_seconds(), time.delta().as_secs_f32());
|
assert_eq!(time.delta_seconds(), time.delta().as_secs_f32());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user