Mountain  1.0.0
Simple C++ 2D Game Framework
time.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cmath>
4 #include <optional>
5 
6 #include "Mountain/core.hpp"
7 #include "Mountain/utils/stopwatch.hpp"
8 
11 
12 namespace Mountain
13 {
15  class Time
16  {
17  STATIC_CLASS(Time)
18 
19  public:
20  MOUNTAIN_API static inline float_t timeScale = 1.f;
21 
23  MOUNTAIN_API static inline float_t maxDeltaTime = 0.1f;
24 
26  MOUNTAIN_API static inline float_t freezeTimer = 0.f;
27 
28  MOUNTAIN_API static inline std::optional<double_t> targetFps;
29 
31  STATIC_GETTER(float_t, TotalTime, m_TotalTime)
32 
33 
34  STATIC_GETTER(float_t, LastTotalTime, m_LastTotalTime)
35 
36 
37  STATIC_GETTER(float_t, TotalTimeUnscaled, m_TotalTimeUnscaled)
38 
39 
40  STATIC_GETTER(float_t, LastTotalTimeUnscaled, m_LastTotalTimeUnscaled)
41 
42 
43  STATIC_GETTER(float_t, DeltaTime, m_DeltaTime)
44 
45 
46  STATIC_GETTER(float_t, DeltaTimeUnscaled, m_DeltaTimeUnscaled)
47 
48 
49  STATIC_GETTER(uint64_t, TotalFrameCount, m_TotalFrameCount)
50 
51 
52  MOUNTAIN_API static float_t GetTargetDeltaTime();
61 
63  STATIC_GETTER(float_t, LastFrameDuration, m_LastFrameDuration)
64 
65 
66  [[nodiscard]]
70  MOUNTAIN_API static bool_t OnInterval(float_t interval);
71 
76  [[nodiscard]]
77  MOUNTAIN_API static bool_t OnIntervalUnscaled(float_t interval);
78 
79  private:
80  MOUNTAIN_API static inline float_t m_TotalTime = 0.f;
81  MOUNTAIN_API static inline float_t m_LastTotalTime = 0.f;
82  MOUNTAIN_API static inline float_t m_TotalTimeUnscaled = 0.f;
83  MOUNTAIN_API static inline float_t m_LastTotalTimeUnscaled = 0.f;
84  MOUNTAIN_API static inline float_t m_DeltaTime = 0.f;
85  MOUNTAIN_API static inline float_t m_DeltaTimeUnscaled = 0.f;
86  MOUNTAIN_API static inline uint64_t m_TotalFrameCount = 0;
87 
88  MOUNTAIN_API static inline float_t m_LastFrameDuration = 0.f;
89 
90  MOUNTAIN_API static inline Stopwatch m_Stopwatch;
91 
92  static void Initialize();
93  static void Shutdown();
94 
97  static void Update();
102  static void WaitForNextFrame();
103  static double_t SleepFor(double_t milliseconds);
104 
105  // Calls Initialize, Shutdown, Update and WaitForNextFrame
106  friend class Game;
107  };
108 }
MATH_TOOLBOX constexpr bool_t OnInterval(float_t value, float_t lastValue, float_t interval)
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22