diff options
| author | JAROWMR <jarorutjes07@gmail.com> | 2024-12-14 11:40:33 +0100 | 
|---|---|---|
| committer | JAROWMR <jarorutjes07@gmail.com> | 2024-12-14 11:40:33 +0100 | 
| commit | 061b2b8ab9aba67c1467cdd163fb7a04de95f4f1 (patch) | |
| tree | e1960a83461e0d83a7027a88404af1a7c70f6dcd /src/crepe/api/LoopTimer.cpp | |
| parent | fd2ebb54d0c2b269c15fc84a4ac77993efc917d7 (diff) | |
| parent | b9fc66f6922b1f40f2dbe14e8dfc4caa469654bc (diff) | |
Merge branch 'master' of github.com:lonkaars/crepe into jaro/collision-system
Diffstat (limited to 'src/crepe/api/LoopTimer.cpp')
| -rw-r--r-- | src/crepe/api/LoopTimer.cpp | 79 | 
1 files changed, 0 insertions, 79 deletions
| diff --git a/src/crepe/api/LoopTimer.cpp b/src/crepe/api/LoopTimer.cpp deleted file mode 100644 index 15a0e3a..0000000 --- a/src/crepe/api/LoopTimer.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include <chrono> - -#include "../facade/SDLContext.h" -#include "../util/Log.h" - -#include "LoopTimer.h" - -using namespace crepe; - -LoopTimer::LoopTimer() { dbg_trace(); } - -LoopTimer & LoopTimer::get_instance() { -	static LoopTimer instance; -	return instance; -} - -void LoopTimer::start() { -	this->last_frame_time = std::chrono::steady_clock::now(); -	this->elapsed_time = std::chrono::milliseconds(0); -	this->elapsed_fixed_time = std::chrono::milliseconds(0); -	this->delta_time = std::chrono::milliseconds(0); -} - -void LoopTimer::update() { -	auto current_frame_time = std::chrono::steady_clock::now(); -	// Convert to duration in seconds for delta time -	this->delta_time = std::chrono::duration_cast<std::chrono::duration<double>>( -		current_frame_time - last_frame_time); - -	if (this->delta_time > this->maximum_delta_time) { -		this->delta_time = this->maximum_delta_time; -	} - -	this->delta_time *= this->game_scale; -	this->elapsed_time += this->delta_time; -	this->last_frame_time = current_frame_time; -} - -double LoopTimer::get_delta_time() const { return this->delta_time.count(); } - -double LoopTimer::get_current_time() const { return this->elapsed_time.count(); } - -void LoopTimer::advance_fixed_update() { this->elapsed_fixed_time += this->fixed_delta_time; } - -double LoopTimer::get_fixed_delta_time() const { return this->fixed_delta_time.count(); } - -void LoopTimer::set_fps(int fps) { -	this->fps = fps; -	// target time per frame in seconds -	this->frame_target_time = std::chrono::duration<double>(1.0) / fps; -} - -int LoopTimer::get_fps() const { return this->fps; } - -void LoopTimer::set_game_scale(double value) { this->game_scale = value; } - -double LoopTimer::get_game_scale() const { return this->game_scale; } -void LoopTimer::enforce_frame_rate() { -	std::chrono::steady_clock::time_point current_frame_time -		= std::chrono::steady_clock::now(); -	std::chrono::milliseconds frame_duration -		= std::chrono::duration_cast<std::chrono::milliseconds>(current_frame_time -																- this->last_frame_time); - -	if (frame_duration < this->frame_target_time) { -		std::chrono::milliseconds delay_time -			= std::chrono::duration_cast<std::chrono::milliseconds>(this->frame_target_time -																	- frame_duration); -		if (delay_time.count() > 0) { -			SDLContext::get_instance().delay(delay_time.count()); -		} -	} - -	this->last_frame_time = current_frame_time; -} - -double LoopTimer::get_lag() const { -	return (this->elapsed_time - this->elapsed_fixed_time).count(); -} |