From 363788accdb5488d20d04cc1d35d20eaff828e7f Mon Sep 17 00:00:00 2001 From: Irastris Date: Thu, 16 Apr 2026 23:29:13 -0400 Subject: [PATCH] Frame interp: Cap the accumulator --- src/m_Do/m_Do_main.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 715f9d3c84..1fed646a71 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -202,9 +202,9 @@ void main01(void) { if (preLaunchUIWindowSize.width != 0) mDoGph_gInf_c::setWindowSize(preLaunchUIWindowSize); - constexpr double kSimStepSeconds = 1.0 / 30.0; + constexpr float kSimStepSeconds = 1.0 / 30.0; auto previous_time = std::chrono::steady_clock::now(); - double accumulator = kSimStepSeconds; + float accumulator = kSimStepSeconds; do { // 1. Update Window Events @@ -229,7 +229,7 @@ void main01(void) { eventsDone:; auto current_time = std::chrono::steady_clock::now(); - double frame_seconds = std::chrono::duration(current_time - previous_time).count(); + float frame_seconds = std::chrono::duration(current_time - previous_time).count(); previous_time = current_time; accumulator += frame_seconds; @@ -243,12 +243,12 @@ void main01(void) { if (dusk::getSettings().game.enableFrameInterpolation && !dusk::getTransientSettings().skipFrameRateLimit) { dusk::frame_interp::notify_presentation_frame(); - while (accumulator >= kSimStepSeconds) { + if (accumulator >= kSimStepSeconds) { mDoCPd_c::read(); dusk::gyro::read(kSimStepSeconds); fapGm_Execute(); mDoAud_Execute(); - accumulator -= kSimStepSeconds; + accumulator = 0.0f; } dusk::frame_interp::interpolate(static_cast(accumulator / kSimStepSeconds)); { @@ -256,7 +256,7 @@ void main01(void) { cAPIGph_Painter(); } } else { - accumulator = 0.0; + accumulator = 0.0f; // Game Inputs mDoCPd_c::read();