44
55#include < chrono>
66#include < algorithm>
7+ #include < ranges>
78#include < stdexcept>
89#include < iostream>
910#include < random>
@@ -122,11 +123,11 @@ void Engine::Run() {
122123 }
123124
124125 // Calculate delta time
125- deltaTime = CalculateDeltaTime ();
126+ deltaTimeMs = CalculateDeltaTimeMs ();
126127
127128 // Update frame counter and FPS
128129 frameCount++;
129- fpsUpdateTimer += deltaTime ;
130+ fpsUpdateTimer += deltaTimeMs. count () * 0 . 001f ;
130131
131132 // Update window title with FPS and frame time every second
132133 if (fpsUpdateTimer >= 1 .0f ) {
@@ -147,7 +148,7 @@ void Engine::Run() {
147148 }
148149
149150 // Update
150- Update (deltaTime );
151+ Update (deltaTimeMs );
151152
152153 // Render
153154 Render ();
@@ -369,7 +370,7 @@ void Engine::handleKeyInput(uint32_t key, bool pressed) {
369370 }
370371}
371372
372- void Engine::Update (float deltaTime) {
373+ void Engine::Update (TimeDelta deltaTime) {
373374 // Debug: Verify Update method is being called
374375 static int updateCallCount = 0 ;
375376 updateCallCount++;
@@ -415,27 +416,27 @@ void Engine::Render() {
415416 renderer->Render (entities, activeCamera, imguiSystem.get ());
416417}
417418
418- float Engine::CalculateDeltaTime () {
419+ std::chrono::milliseconds Engine::CalculateDeltaTimeMs () {
419420 // Get current time using a steady clock to avoid system time jumps
420421 uint64_t currentTime = static_cast <uint64_t >(
421422 std::chrono::duration_cast<std::chrono::milliseconds>(
422423 std::chrono::steady_clock::now ().time_since_epoch ()
423424 ).count ()
424425 );
425426
426- // Initialize lastFrameTime on first call
427- if (lastFrameTime == 0 ) {
428- lastFrameTime = currentTime;
429- return 0 . 016f ; // ~16ms as a sane initial guess
427+ // Initialize lastFrameTimeMs on first call
428+ if (lastFrameTimeMs == 0 ) {
429+ lastFrameTimeMs = currentTime;
430+ return std::chrono::milliseconds ( 16 ) ; // ~16ms as a sane initial guess
430431 }
431432
432433 // Calculate delta time in milliseconds
433- uint64_t delta = currentTime - lastFrameTime ;
434+ uint64_t delta = currentTime - lastFrameTimeMs ;
434435
435436 // Update last frame time
436- lastFrameTime = currentTime;
437+ lastFrameTimeMs = currentTime;
437438
438- return static_cast <float >(delta) / 1000 . 0f ;
439+ return std::chrono::milliseconds ( static_cast <long long >(delta)) ;
439440}
440441
441442void Engine::HandleResize (int width, int height) const {
@@ -458,7 +459,7 @@ void Engine::HandleResize(int width, int height) const {
458459 }
459460}
460461
461- void Engine::UpdateCameraControls (float deltaTime) const {
462+ void Engine::UpdateCameraControls (TimeDelta deltaTime) const {
462463 if (!activeCamera) return ;
463464
464465 // Get a camera transform component
@@ -492,7 +493,7 @@ void Engine::UpdateCameraControls(float deltaTime) const {
492493
493494 // Manual camera controls (only when tracking is disabled)
494495 // Calculate movement speed
495- float velocity = cameraControl.cameraSpeed * deltaTime;
496+ float velocity = cameraControl.cameraSpeed * deltaTime. count () * . 001f ;
496497
497498 // Calculate camera direction vectors based on yaw and pitch
498499 glm::vec3 front;
@@ -859,10 +860,10 @@ void Engine::RunAndroid() {
859860 // We just need to update and render when the platform is ready
860861
861862 // Calculate delta time
862- deltaTime = CalculateDeltaTime ();
863+ deltaTimeMs = CalculateDeltaTimeMs ();
863864
864865 // Update
865- Update (deltaTime );
866+ Update (deltaTimeMs );
866867
867868 // Render
868869 Render ();
0 commit comments