From 0269f45fe554c2143f934abc59784f57d031407f Mon Sep 17 00:00:00 2001 From: lawnjelly Date: Thu, 30 Jan 2025 11:44:16 +0000 Subject: [PATCH] Physics Interpolation - fix client interpolation pump Client interpolation pump is moved AFTER the physics tick, after physics objects have been moved. This is necessary because the `current` transform is also updated during the pump. --- scene/main/scene_tree.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 3e90a5f12..d959b5fff 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -618,11 +618,6 @@ void SceneTree::iteration_prepare() { // are flushed before pumping the interpolation prev and currents. flush_transform_notifications(); RenderingServer::get_singleton()->tick(); - - // Any objects performing client physics interpolation - // should be given an opportunity to keep their previous transforms - // up to date before each new physics tick. - _client_physics_interpolation.physics_process(); } } @@ -631,6 +626,11 @@ void SceneTree::iteration_end() { // to be flushed to the RenderingServer before finishing a physics tick. if (_physics_interpolation_enabled) { flush_transform_notifications(); + + // Any objects performing client physics interpolation + // should be given an opportunity to keep their previous transforms + // up to date. + _client_physics_interpolation.physics_process(); } }