diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-15 20:39:07 +0100 | 
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-15 20:39:07 +0100 | 
| commit | e8cd950b8ebd152d76d588d4fedc7f4c239b0835 (patch) | |
| tree | 7919d13a79d52f1365bc19bf1b435a6264ee5512 /src/crepe/api/LoopTimer.h | |
| parent | 5bee4515c1089ce3499bc3b74780db94f0c02306 (diff) | |
| parent | 9f6475e7b0698c414138e2a8140b47f01ce9c5d1 (diff) | |
merge `master` into `loek/cleanup`
Diffstat (limited to 'src/crepe/api/LoopTimer.h')
| -rw-r--r-- | src/crepe/api/LoopTimer.h | 144 | 
1 files changed, 71 insertions, 73 deletions
diff --git a/src/crepe/api/LoopTimer.h b/src/crepe/api/LoopTimer.h index aff4bf7..f277d7b 100644 --- a/src/crepe/api/LoopTimer.h +++ b/src/crepe/api/LoopTimer.h @@ -7,117 +7,117 @@ namespace crepe {  class LoopTimer {  public:  	/** -     * \brief Get the singleton instance of LoopTimer. -     * -     * \return A reference to the LoopTimer instance. -     */ +	 * \brief Get the singleton instance of LoopTimer. +	 * +	 * \return A reference to the LoopTimer instance. +	 */  	static LoopTimer & get_instance();  	/** -     * \brief Get the current delta time for the current frame. -     * -     * \return Delta time in seconds since the last frame. -     */ +	 * \brief Get the current delta time for the current frame. +	 * +	 * \return Delta time in seconds since the last frame. +	 */  	double get_delta_time() const;  	/** -     * \brief Get the current game time. -     * -     * \note The current game time may vary from real-world elapsed time. -     * It is the cumulative sum of each frame's delta time. -     * -     * \return Elapsed game time in seconds. -     */ +	 * \brief Get the current game time. +	 * +	 * \note The current game time may vary from real-world elapsed time. It is the cumulative +	 * sum of each frame's delta time. +	 * +	 * \return Elapsed game time in seconds. +	 */  	double get_current_time() const;  	/** -     * \brief Set the target frames per second (FPS). -     * -     * \param fps The desired frames rendered per second. -     */ +	 * \brief Set the target frames per second (FPS). +	 * +	 * \param fps The desired frames rendered per second. +	 */  	void set_fps(int fps);  	/** -     * \brief Get the current frames per second (FPS). -     * -     * \return Current FPS. -     */ +	 * \brief Get the current frames per second (FPS). +	 * +	 * \return Current FPS. +	 */  	int get_fps() const;  	/** -     * \brief Get the current game scale. -     * -     * \return The current game scale, where 0 = paused, 1 = normal speed, and values > 1 speed up the game. -     */ +	 * \brief Get the current game scale. +	 * +	 * \return The current game scale, where 0 = paused, 1 = normal speed, and values > 1 speed +	 * up the game. +	 */  	double get_game_scale() const;  	/** -     * \brief Set the game scale. -     * -     * \param game_scale The desired game scale (0 = pause, 1 = normal speed, > 1 = speed up). -     */ +	 * \brief Set the game scale. +	 * +	 * \param game_scale The desired game scale (0 = pause, 1 = normal speed, > 1 = speed up). +	 */  	void set_game_scale(double game_scale);  private:  	friend class LoopManager;  	/** -     * \brief Start the loop timer. -     * -     * Initializes the timer to begin tracking frame times. -     */ +	 * \brief Start the loop timer. +	 * +	 * Initializes the timer to begin tracking frame times. +	 */  	void start();  	/** -     * \brief Enforce the frame rate limit. -     * -     * Ensures that the game loop does not exceed the target FPS by delaying -     * frame updates as necessary. -     */ +	 * \brief Enforce the frame rate limit. +	 * +	 * Ensures that the game loop does not exceed the target FPS by delaying frame updates as +	 * necessary. +	 */  	void enforce_frame_rate();  	/** -     * \brief Get the fixed delta time for consistent updates. -     * -     * Fixed delta time is used for operations that require uniform time steps, -     * such as physics calculations. -     * -     * \return Fixed delta time in seconds. -     */ +	 * \brief Get the fixed delta time for consistent updates. +	 * +	 * Fixed delta time is used for operations that require uniform time steps, such as physics +	 * calculations. +	 * +	 * \return Fixed delta time in seconds. +	 */  	double get_fixed_delta_time() const;  	/** -     * \brief Get the accumulated lag in the game loop. -     * -     * Lag represents the difference between the target frame time and the -     * actual frame time, useful for managing fixed update intervals. -     * -     * \return Accumulated lag in seconds. -     */ +	 * \brief Get the accumulated lag in the game loop. +	 * +	 * Lag represents the difference between the target frame time and the actual frame time, +	 * useful for managing fixed update intervals. +	 * +	 * \return Accumulated lag in seconds. +	 */  	double get_lag() const;  	/** -     * \brief Construct a new LoopTimer object. -     * -     * Private constructor for singleton pattern to restrict instantiation -     * outside the class. -     */ +	 * \brief Construct a new LoopTimer object. +	 * +	 * Private constructor for singleton pattern to restrict instantiation outside the class. +	 */  	LoopTimer();  	/** -     * \brief Update the timer to the current frame. -     * -     * Calculates and updates the delta time for the current frame and adds it to -     * the cumulative game time. -     */ +	 * \brief Update the timer to the current frame. +	 * +	 * Calculates and updates the delta time for the current frame and adds it to the cumulative +	 * game time. +	 */  	void update();  	/** -     * \brief Advance the game loop by a fixed update interval. -     * -     * This method progresses the game state by a consistent, fixed time step, -     * allowing for stable updates independent of frame rate fluctuations. -     */ +	 * \brief Advance the game loop by a fixed update interval. +	 * +	 * This method progresses the game state by a consistent, fixed time step, allowing for +	 * stable updates independent of frame rate fluctuations. +	 */  	void advance_fixed_update();  private: @@ -130,11 +130,9 @@ private:  	//! Delta time for the current frame in seconds  	std::chrono::duration<double> delta_time{0.0};  	//! Target time per frame in seconds -	std::chrono::duration<double> frame_target_time -		= std::chrono::seconds(1) / fps; +	std::chrono::duration<double> frame_target_time = std::chrono::seconds(1) / fps;  	//! Fixed delta time for fixed updates in seconds -	std::chrono::duration<double> fixed_delta_time -		= std::chrono::seconds(1) / 50; +	std::chrono::duration<double> fixed_delta_time = std::chrono::seconds(1) / 50;  	//! Total elapsed game time in seconds  	std::chrono::duration<double> elapsed_time{0.0};  	//! Total elapsed time for fixed updates in seconds  |