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
33
use crate::*;

pub trait TimeSystemExt {
	/// Create a new time system. The time the system is created is used as the time
	/// of the 0th frame.
	fn new_shared() -> TimeSystemHandle;

	/// Update the time system state, marking the beginning of a the next frame.
	///
	/// The instant that this method is called is taken as the reference time for
	/// the frame that is about to be executed.
	///
	/// Timers will also be triggered during this function call if they are due
	/// to trigger.
	///
	/// **Do not** call this function directly if you are using this through the
	/// `riddle` crate.
	///
	/// # Example
	///
	/// ```
	/// # use riddle_time::*; doctest::simple(|time_system| {
	/// let frame_1 = time_system.frame_instant();
	///
	/// // A while later
	/// # doctest::pump_for_secs(time_system, 1);
	/// let frame_n = time_system.frame_instant();
	///
	/// assert_eq!(true, frame_n - frame_1 > std::time::Duration::from_secs(0));
	/// # });
	/// ```
	fn process_frame(&self);
}