From 7e9be933382e87ee05a754ca77459b01e429da7e 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 3c1809c3586..99273ffa81c 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -559,11 +559,6 @@ void SceneTree::iteration_prepare() { // are flushed before pumping the interpolation prev and currents. flush_transform_notifications(); VisualServer::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(); } } @@ -572,6 +567,11 @@ void SceneTree::iteration_end() { // to be flushed to the VisualServer 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(); } }