12 RageTimer(std::chrono::steady_clock::time_point tm) : tm(tm) {};
15 tm += std::chrono::microseconds(microseconds);
17 RageTimer(
unsigned secs,
unsigned microseconds) : tm()
19 auto seconds = std::chrono::seconds(secs);
20 auto microsecs = std::chrono::microseconds(microseconds);
21 tm += seconds + microsecs;
25 [[nodiscard]]
auto Ago()
const -> float;
26 void Touch() { tm = std::chrono::steady_clock::now(); }
27 [[nodiscard]]
auto IsZero()
const ->
bool
29 return tm == std::chrono::steady_clock::time_point();
31 void SetZero() { tm = std::chrono::steady_clock::time_point(); }
34 auto GetDeltaTime() -> float;
36 [[nodiscard]]
auto PeekDeltaTime()
const ->
float {
return Ago(); }
38 static auto GetTimeSinceStart()
43 auto operator+(
float tm)
const ->
RageTimer;
44 auto operator-(
float tm)
const ->
RageTimer {
return *
this + -tm; }
45 void operator+=(
float tm) { *
this = *
this + tm; }
46 void operator-=(
float tm) { *
this = *
this + -tm; }
50 auto operator-(
const RageTimer& rhs)
const -> float;
52 auto operator<(
const RageTimer& rhs)
const -> bool;
53 std::chrono::steady_clock::time_point tm;