Provides accurate timing for animations and frame pacing. More...
#include <timing.h>
Public Member Functions | |
| float | Update () |
| Update the timing manager (call once per frame) | |
| float | GetDeltaTime () const |
| Get the last frame's delta time in seconds. | |
| float | GetFPS () const |
| Get current FPS. | |
| float | GetElapsedTime () const |
| Get total elapsed time since first update. | |
| void | Reset () |
| Reset the timing state. | |
| void | BeginFrame () |
| Mark the start of a new frame for budget tracking. | |
| float | GetFrameElapsedMs () const |
| Get elapsed time within the current frame in milliseconds. | |
| float | GetFrameBudgetRemainingMs () const |
| Get remaining frame budget in milliseconds (targeting 60fps) | |
Static Public Member Functions | |
| static TimingManager & | Get () |
Private Member Functions | |
| TimingManager () | |
| TimingManager (const TimingManager &)=delete | |
| TimingManager & | operator= (const TimingManager &)=delete |
Private Attributes | |
| uint64_t | frequency_ |
| uint64_t | first_time_ |
| uint64_t | last_time_ |
| uint64_t | frame_start_time_ = 0 |
| float | accumulated_time_ |
| uint32_t | frame_count_ |
| float | fps_ |
| float | last_delta_time_ |
Provides accurate timing for animations and frame pacing.
This class solves the issue where ImGui::GetIO().DeltaTime only updates when events are processed (mouse movement, etc). It uses SDL's performance counter to provide accurate timing regardless of input events.
|
inlineprivate |
Definition at line 117 of file timing.h.
References accumulated_time_, first_time_, fps_, frame_count_, frequency_, last_delta_time_, and last_time_.
|
privatedelete |
|
inlinestatic |
Definition at line 20 of file timing.h.
Referenced by yaze::Controller::DoRender(), yaze::gui::BackgroundRenderer::RenderDockingBackground(), yaze::editor::WelcomeScreen::Show(), and yaze::editor::EditorManager::Update().
|
inline |
Update the timing manager (call once per frame)
Definition at line 29 of file timing.h.
References accumulated_time_, fps_, frame_count_, frequency_, last_delta_time_, and last_time_.
Referenced by yaze::Controller::DoRender(), and yaze::editor::EditorManager::Update().
|
inline |
Get the last frame's delta time in seconds.
Definition at line 60 of file timing.h.
References last_delta_time_.
Referenced by yaze::editor::WelcomeScreen::Show().
|
inline |
|
inline |
Get total elapsed time since first update.
Definition at line 70 of file timing.h.
References first_time_, frequency_, and last_time_.
|
inline |
Reset the timing state.
Definition at line 80 of file timing.h.
References accumulated_time_, first_time_, fps_, frame_count_, frame_start_time_, last_delta_time_, and last_time_.
|
inline |
Mark the start of a new frame for budget tracking.
Definition at line 93 of file timing.h.
References frame_start_time_.
|
inline |
Get elapsed time within the current frame in milliseconds.
Definition at line 101 of file timing.h.
References frame_start_time_, and frequency_.
Referenced by GetFrameBudgetRemainingMs().
|
inline |
Get remaining frame budget in milliseconds (targeting 60fps)
Definition at line 111 of file timing.h.
References GetFrameElapsedMs().

|
privatedelete |
|
private |
Definition at line 127 of file timing.h.
Referenced by GetElapsedTime(), GetFrameElapsedMs(), TimingManager(), and Update().
|
private |
Definition at line 128 of file timing.h.
Referenced by GetElapsedTime(), Reset(), and TimingManager().
|
private |
Definition at line 129 of file timing.h.
Referenced by GetElapsedTime(), Reset(), TimingManager(), and Update().
|
private |
Definition at line 130 of file timing.h.
Referenced by BeginFrame(), GetFrameElapsedMs(), and Reset().
|
private |
Definition at line 131 of file timing.h.
Referenced by Reset(), TimingManager(), and Update().
|
private |
Definition at line 132 of file timing.h.
Referenced by Reset(), TimingManager(), and Update().
|
private |
|
private |
Definition at line 134 of file timing.h.
Referenced by GetDeltaTime(), Reset(), TimingManager(), and Update().