From 2d3dedb12d41129619a3ee6219072994421f129f Mon Sep 17 00:00:00 2001 From: lawnjelly Date: Sun, 29 Jun 2025 16:55:15 +0100 Subject: [PATCH] FTI - Add reset on setting `top_level` --- scene/3d/node_3d.cpp | 2 ++ scene/main/canvas_item.cpp | 1 + scene/main/node.cpp | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp index b2449607df..ecf5f9b7c4 100644 --- a/scene/3d/node_3d.cpp +++ b/scene/3d/node_3d.cpp @@ -1028,6 +1028,7 @@ void Node3D::set_as_top_level(bool p_enabled) { } } data.top_level = p_enabled; + reset_physics_interpolation(); } void Node3D::set_as_top_level_keep_local(bool p_enabled) { @@ -1037,6 +1038,7 @@ void Node3D::set_as_top_level_keep_local(bool p_enabled) { } data.top_level = p_enabled; _propagate_transform_changed(this); + reset_physics_interpolation(); } bool Node3D::is_set_as_top_level() const { diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp index 9373dc1c8b..39f629f524 100644 --- a/scene/main/canvas_item.cpp +++ b/scene/main/canvas_item.cpp @@ -519,6 +519,7 @@ void CanvasItem::set_as_top_level(bool p_top_level) { if (get_viewport()) { get_viewport()->canvas_item_top_level_changed(); } + reset_physics_interpolation(); } void CanvasItem::_top_level_changed() { diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 170b3680a4..28e6f297b1 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -952,7 +952,7 @@ void Node::set_physics_interpolation_mode(PhysicsInterpolationMode p_mode) { } void Node::reset_physics_interpolation() { - if (is_inside_tree()) { + if (SceneTree::is_fti_enabled() && is_inside_tree()) { propagate_notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION); // If `reset_physics_interpolation()` is called explicitly by the user