diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/main.cpp | 5 | ||||
-rw-r--r-- | main/main_timer_sync.cpp | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/main/main.cpp b/main/main.cpp index 9215f2e848..f1ba25bf02 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -3967,6 +3967,11 @@ bool Main::iteration() { PhysicsServer3D::get_singleton()->flush_queries(); #endif // _3D_DISABLED + // Prepare the fixed timestep interpolated nodes BEFORE they are updated + // by the physics server, otherwise the current and previous transforms + // may be the same, and no interpolation takes place. + OS::get_singleton()->get_main_loop()->iteration_prepare(); + PhysicsServer2D::get_singleton()->sync(); PhysicsServer2D::get_singleton()->flush_queries(); diff --git a/main/main_timer_sync.cpp b/main/main_timer_sync.cpp index 569930d427..d358d9fa93 100644 --- a/main/main_timer_sync.cpp +++ b/main/main_timer_sync.cpp @@ -299,6 +299,17 @@ int64_t MainTimerSync::DeltaSmoother::smooth_delta(int64_t p_delta) { // before advance_core considers changing the physics_steps return from // the typical values as defined by typical_physics_steps double MainTimerSync::get_physics_jitter_fix() { + // Turn off jitter fix when using fixed timestep interpolation. + // Note this shouldn't be on UNTIL 3d interpolation is implemented, + // otherwise we will get people making 3d games with the physics_interpolation + // set to on getting jitter fix disabled unexpectedly. +#if 0 + if (Engine::get_singleton()->is_physics_interpolation_enabled()) { + // Would be better to write a simple bypass for jitter fix but this will do to get started. + return 0.0; + } +#endif + return Engine::get_singleton()->get_physics_jitter_fix(); } |