CoriEngine
Loading...
Searching...
No Matches
Time.hpp
Go to the documentation of this file.
1#pragma once
2
3namespace Cori {
4 namespace Core {
8 class GameTimer {
9 public:
10 ~GameTimer() = default;
11
16 void SetTickrate(const uint16_t tickrate);
17
21 [[nodiscard]] double GetDeltaTime() const { return m_DeltaTime; }
22
26 [[nodiscard]] double GetTickAlpha() const { return m_TickAlpha; }
27
31 [[nodiscard]] float GetTimestep() const { return m_Timestep; }
32
36 [[nodiscard]] uint16_t GetTickRate() const { return m_Tickrate; }
37
42 [[nodiscard]] double GetElapsedMilliseconds() const { return m_Time * 1000.0f; }
43
48 [[nodiscard]] double GetElapsedSeconds() const { return m_Time; }
49
54 [[nodiscard]] double GetElapsedMinutes() const { return m_Time / 60.0f; }
55
60 [[nodiscard]] double GetElapsedHours() const { return m_Time / 3600.0f; }
61
67 [[nodiscard]] static std::string FormatTime_MS_to_M_S_MS(const double milliseconds);
68
74 [[nodiscard]] static std::string FormatTime_S_to_M_S_MS(const double seconds);
75
84 void SetManualTickStep(const bool state);
85
86 private:
87 friend class Application;
88 GameTimer();
89 void SetTickrateUpdateFunc(const std::function<void(GameTimer&)>& func) { m_TickrateUpdateFunc = func; }
90 void Update();
91
92 double m_DeltaTime{ 0 };
93 double m_TickAlpha{ 0 };
94
95 float m_Timestep{ 0 };
96 double m_Accumulator{ 0 };
97
98 // time in seconds since start
99 double m_Time{ 0 };
100
101 bool m_ManualStep{ false };
102 bool m_ManualTickGate{ false };
103
104 uint64_t m_LastTime{ 0 };
105
106 uint16_t m_Tickrate{ 0 };
107
108 std::function<void(GameTimer&)> m_TickrateUpdateFunc{ nullptr };
109 };
110
115 public:
116 ManualTimer() = default;
117 ~ManualTimer() = default;
118
122 void Start();
123
128 [[nodiscard]] double End() const;
129 private:
130 uint64_t m_Start{ 0 };
131 };
132 }
133}
double GetElapsedMilliseconds() const
Gets the time in milliseconds since application start.
Definition Time.hpp:42
void SetTickrate(const uint16_t tickrate)
Changes the tickrate.
Definition Time.cpp:83
friend class Application
Definition Time.hpp:87
double GetElapsedHours() const
Gets the time in hours since application start.
Definition Time.hpp:60
double GetElapsedMinutes() const
Gets the time in minutes since application start.
Definition Time.hpp:54
double GetTickAlpha() const
Returns the tickAlpha, scale is in seconds. Used for between tick interpolation.
Definition Time.hpp:26
double GetDeltaTime() const
Returns the deltaTime, scale is in seconds.
Definition Time.hpp:21
static std::string FormatTime_S_to_M_S_MS(const double seconds)
Formats seconds into a string with a format Min:Sec:Ms.
Definition Time.cpp:20
float GetTimestep() const
Returns the current timeStep, scale is in seconds.
Definition Time.hpp:31
void SetManualTickStep(const bool state)
Enables or disables manual tick step.
Definition Time.cpp:24
uint16_t GetTickRate() const
Returns the current tickRate.
Definition Time.hpp:36
static std::string FormatTime_MS_to_M_S_MS(const double milliseconds)
Formats milliseconds into a string with a format Min:Sec:Ms.
Definition Time.cpp:12
double GetElapsedSeconds() const
Gets the time in seconds since application start.
Definition Time.hpp:48
double End() const
Stops the manual timer.
Definition Time.cpp:93
void Start()
Start the manual timer.
Definition Time.cpp:89
Core systems of the engine are here.
Global engine namespace.