From 55978b5024667707351d51ad2e8ddd79488e4c37 Mon Sep 17 00:00:00 2001 From: lawnjelly Date: Sun, 22 Jun 2025 15:44:52 +0100 Subject: [PATCH] Revert "FTI - Reduce `VisualInstance3D` xform notifications" This reverts commit e10003ce33f8640c560ed1b3dec49e30b9e511b9. --- scene/3d/camera_3d.cpp | 1 - scene/3d/node_3d.cpp | 16 +--------------- scene/3d/node_3d.h | 6 ------ scene/3d/visual_instance_3d.cpp | 6 ++---- 4 files changed, 3 insertions(+), 26 deletions(-) diff --git a/scene/3d/camera_3d.cpp b/scene/3d/camera_3d.cpp index 76e8f416508..57046c00a53 100644 --- a/scene/3d/camera_3d.cpp +++ b/scene/3d/camera_3d.cpp @@ -164,7 +164,6 @@ void Camera3D::_update_camera() { void Camera3D::_physics_interpolated_changed() { _update_process_mode(); - Node3D::_physics_interpolated_changed(); } void Camera3D::set_desired_process_modes(bool p_process_internal, bool p_physics_process_internal) { diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp index 112816c045e..00a40b12cc3 100644 --- a/scene/3d/node_3d.cpp +++ b/scene/3d/node_3d.cpp @@ -1241,21 +1241,9 @@ Vector3 Node3D::to_global(Vector3 p_local) const { return get_global_transform().xform(p_local); } -void Node3D::_physics_interpolated_changed() { - ERR_THREAD_GUARD; - data.notify_transform = data.notify_transform_requested || (data.notify_transform_when_fti_off && !is_physics_interpolated_and_enabled()); -} - -void Node3D::_set_notify_transform_when_fti_off(bool p_enable) { - ERR_THREAD_GUARD; - data.notify_transform_when_fti_off = p_enable; - data.notify_transform = data.notify_transform_requested || (data.notify_transform_when_fti_off && !is_physics_interpolated_and_enabled()); -} - void Node3D::set_notify_transform(bool p_enabled) { ERR_THREAD_GUARD; - data.notify_transform_requested = p_enabled; - data.notify_transform = data.notify_transform_requested || (data.notify_transform_when_fti_off && !is_physics_interpolated_and_enabled()); + data.notify_transform = p_enabled; } bool Node3D::is_transform_notification_enabled() const { @@ -1537,8 +1525,6 @@ Node3D::Node3D() : data.ignore_notification = false; data.notify_local_transform = false; data.notify_transform = false; - data.notify_transform_requested = false; - data.notify_transform_when_fti_off = false; data.visible = true; data.disable_scale = false; diff --git a/scene/3d/node_3d.h b/scene/3d/node_3d.h index 930a174136d..d03884b09cd 100644 --- a/scene/3d/node_3d.h +++ b/scene/3d/node_3d.h @@ -134,9 +134,6 @@ private: bool notify_local_transform : 1; bool notify_transform : 1; - bool notify_transform_requested : 1; - bool notify_transform_when_fti_off : 1; - bool visible : 1; bool disable_scale : 1; @@ -202,9 +199,6 @@ protected: // (e.g. changing Camera zoom even if position hasn't changed). void fti_notify_node_changed(bool p_transform_changed = true); - void _set_notify_transform_when_fti_off(bool p_enable); - virtual void _physics_interpolated_changed() override; - // Opportunity after FTI to update the servers // with global_transform_interpolated, // and any custom interpolated data in derived classes. diff --git a/scene/3d/visual_instance_3d.cpp b/scene/3d/visual_instance_3d.cpp index 32844531e35..41903f208a1 100644 --- a/scene/3d/visual_instance_3d.cpp +++ b/scene/3d/visual_instance_3d.cpp @@ -88,9 +88,7 @@ void VisualInstance3D::_notification(int p_what) { } break; case NOTIFICATION_TRANSFORM_CHANGED: { - // NOTIFICATION normally turned off for physics interpolated cases (via - // `notify_transform_when_fti_off`), however derived classes can still turn this back on, - // so always wrap with is_physics_interpolation_enabled(). + // ToDo : Can we turn off notify transform for physics interpolated cases? if (_is_vi_visible() && !(is_inside_tree() && get_tree()->is_physics_interpolation_enabled()) && !_is_using_identity_transform()) { // Physics interpolation global off, always send. RenderingServer::get_singleton()->instance_set_transform(instance, get_global_transform()); @@ -206,7 +204,7 @@ RID VisualInstance3D::get_base() const { VisualInstance3D::VisualInstance3D() { instance = RenderingServer::get_singleton()->instance_create(); RenderingServer::get_singleton()->instance_attach_object_instance_id(instance, get_instance_id()); - _set_notify_transform_when_fti_off(true); + set_notify_transform(true); } VisualInstance3D::~VisualInstance3D() {