diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crepe/api/LoopManager.h | 106 | ||||
| -rw-r--r-- | src/crepe/api/LoopTimer.h | 264 | 
2 files changed, 185 insertions, 185 deletions
diff --git a/src/crepe/api/LoopManager.h b/src/crepe/api/LoopManager.h index 8899bfd..af60d44 100644 --- a/src/crepe/api/LoopManager.h +++ b/src/crepe/api/LoopManager.h @@ -3,64 +3,64 @@  namespace crepe {  class LoopManager { -    public: -        void start(); +public: +	void start(); -    private: -        /** -         * \brief Setup function for one-time initialization. -         * -         * This function initializes necessary components for the game. -         */ -        void setup(); -        /** -         * \brief Main game loop function. -         * -         * This function runs the main loop, handling game updates and rendering. -         */ -        void loop(); +private: +	/** +	 * \brief Setup function for one-time initialization. +	 * +	 * This function initializes necessary components for the game. +	 */ +	void setup(); +	/** +	 * \brief Main game loop function. +	 * +	 * This function runs the main loop, handling game updates and rendering. +	 */ +	void loop(); -        /** -         * \brief Function for handling input-related system calls. -         * -         * Processes user inputs from keyboard and mouse. -         */ -        void process_input(); +	/** +	 * \brief Function for handling input-related system calls. +	 * +	 * Processes user inputs from keyboard and mouse. +	 */ +	void process_input(); -        /** -         * \brief Per-frame update. -         * -         * Updates the game state based on the elapsed time since the last frame. -         */ -        void update(); +	/** +	 * \brief Per-frame update. +	 * +	 * Updates the game state based on the elapsed time since the last frame. +	 */ +	void update(); -        /** -         * \brief Late update which is called after update(). -         * -         * This function can be used for final adjustments before rendering. -         */ -        void late_update(); +	/** +	 * \brief Late update which is called after update(). +	 * +	 * This function can be used for final adjustments before rendering. +	 */ +	void late_update(); -        /** -         * \brief Fixed update executed at a fixed rate. -         * -         * This function updates physics and game logic based on LoopTimer's fixed_delta_time. -         */ -        void fixed_update(); -        /** -         * \brief Set game running variable -         * -         * \param running running (false = game shutdown, true = game running) -         */ -        void set_running(bool running); -        /** -         * \brief Function for executing render-related systems. -         * -         * Renders the current state of the game to the screen. -         */ -        void render(); +	/** +	 * \brief Fixed update executed at a fixed rate. +	 * +	 * This function updates physics and game logic based on LoopTimer's fixed_delta_time. +	 */ +	void fixed_update(); +	/** +	 * \brief Set game running variable +	 * +	 * \param running running (false = game shutdown, true = game running) +	 */ +	void set_running(bool running); +	/** +	 * \brief Function for executing render-related systems. +	 * +	 * Renders the current state of the game to the screen. +	 */ +	void render(); -        bool game_running = false; -    }; +	bool game_running = false; +};  } // namespace crepe diff --git a/src/crepe/api/LoopTimer.h b/src/crepe/api/LoopTimer.h index e1cfc35..0089b24 100644 --- a/src/crepe/api/LoopTimer.h +++ b/src/crepe/api/LoopTimer.h @@ -3,141 +3,141 @@  #include <cstdint>  namespace crepe{ -	 +  class LoopTimer {  public: -/** - * \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. - */ -double get_delta_time() const; - -/** - * \brief Get the current game time. - * - * \note The current game time may vary from the real-world elapsed time. - * It is the cumulative sum of each frame's delta time. - * - * \return Elapsed game time in milliseconds. - */ -int get_current_time() const; - -/** - * \brief Set the target frames per second (FPS). - * - * \param fps The number of frames that should be rendered per second. - */ -void set_fps(int 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. - */ -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). - */ -void set_game_scale(double game_scale); - -private: -friend class LoopManager; - -/** - * \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. - */ -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. - */ -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. - */ -double get_lag() const; - -/** - * \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. - */ -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. - */ -void advance_fixed_update(); +	/** +	 * \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. +	 */ +	double get_delta_time() const; + +	/** +	 * \brief Get the current game time. +	 * +	 * \note The current game time may vary from the real-world elapsed time. +	 * It is the cumulative sum of each frame's delta time. +	 * +	 * \return Elapsed game time in milliseconds. +	 */ +	int get_current_time() const; + +	/** +	 * \brief Set the target frames per second (FPS). +	 * +	 * \param fps The number of frames that should be rendered per second. +	 */ +	void set_fps(int 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. +	 */ +	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). +	 */ +	void set_game_scale(double game_scale); + +	private: +	friend class LoopManager; + +	/** +	 * \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. +	 */ +	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. +	 */ +	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. +	 */ +	double get_lag() const; + +	/** +	 * \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. +	 */ +	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. +	 */ +	void advance_fixed_update();  private: -//!  Current frames per second -int fps = 50; -///< Current game scale                     -double game_scale = 1;        -//! Maximum delta time to avoid large jumps        -double maximum_delta_time = 0.25;   -//! Delta time for the current frame  -double delta_time = 0;          -//! Target time per frame in seconds      -double frame_target_time = 1.0 / fps;  -//! Fixed delta time for fixed updates -double fixed_delta_time = 0.02;  -//! Total elapsed game time     -double elapsed_time = 0;     -//! Total elapsed time for fixed updates          -double elapsed_fixed_time = 0;  -//! Time of the last frame      -uint64_t last_frame_time = 0;       +	//!  Current frames per second +	int fps = 50; +	///< Current game scale                     +	double game_scale = 1;        +	//! Maximum delta time to avoid large jumps        +	double maximum_delta_time = 0.25;   +	//! Delta time for the current frame  +	double delta_time = 0;          +	//! Target time per frame in seconds      +	double frame_target_time = 1.0 / fps;  +	//! Fixed delta time for fixed updates +	double fixed_delta_time = 0.02;  +	//! Total elapsed game time     +	double elapsed_time = 0;     +	//! Total elapsed time for fixed updates          +	double elapsed_fixed_time = 0;  +	//! Time of the last frame      +	uint64_t last_frame_time = 0;        };  } // namespace crepe  |