Nui Engine
A game engine framework
Loading...
Searching...
No Matches
Timer.h
1#pragma once
2#include "Core/Common/Types.h"
3
4namespace Nui
5{
9 class Timer
10 {
11 private:
12 using ClockType = chrono::high_resolution_clock;
13
17 struct Time
18 {
22 F64 Time;
23
27 String ToString()
28 {
29 return std::to_string(Time);
30 }
31
35 operator F64() { return Time; }
36 };
37
38 public:
42 void Start()
43 {
44 m_startTime = ClockType::now();
45 m_isRunning = true;
46 }
47
51 void Stop()
52 {
53 m_endTime = ClockType::now();
54 m_isRunning = false;
55 }
56
60 void Reset()
61 {
62 m_startTime = ClockType::now();
63 m_isRunning = false;
64 }
65
70 bool IsRunning() const
71 {
72 return m_isRunning;
73 }
74
80 Time GetElapsedSeconds() const
81 {
82 return Time{ GetElapsedMilliseconds().Time / 1000.0 };
83 }
84
91 {
92 chrono::time_point<ClockType> endTime;
93
94 endTime = m_isRunning ? ClockType::now() : m_endTime;
95
96
97 return Time{ static_cast<F64>(chrono::duration_cast<std::chrono::milliseconds>(endTime - m_startTime).count()) };
98 }
99
100 private:
101 chrono::time_point<ClockType> m_startTime;
102 chrono::time_point<ClockType> m_endTime;
103 bool m_isRunning = false;
104 };
105}
Timer class.
Definition Timer.h:10
void Reset()
Reset timer.
Definition Timer.h:60
Time GetElapsedSeconds() const
Get elapsed time in seconds.
Definition Timer.h:80
void Stop()
Stop timer.
Definition Timer.h:51
Time GetElapsedMilliseconds() const
Get elapsed time in milliseconds.
Definition Timer.h:90
void Start()
Start timer.
Definition Timer.h:42
bool IsRunning() const
Check if timer is running.
Definition Timer.h:70