瀏覽代碼

Merge pull request #104089 from jaydensipe/visual-streak-fix

Fix `Game` view visual streaking when selecting nodes with `Physics Interpolation` enabled
Rémi Verschelde 6 月之前
父節點
當前提交
925a728267
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      scene/debugger/scene_debugger.cpp

+ 7 - 0
scene/debugger/scene_debugger.cpp

@@ -1991,6 +1991,11 @@ void RuntimeNodeSelect::_update_selection() {
 		RS::get_singleton()->instance_set_transform(sb->instance_ofs, t_offset);
 		RS::get_singleton()->instance_set_transform(sb->instance_xray, t);
 		RS::get_singleton()->instance_set_transform(sb->instance_xray_ofs, t_offset);
+
+		RS::get_singleton()->instance_reset_physics_interpolation(sb->instance);
+		RS::get_singleton()->instance_reset_physics_interpolation(sb->instance_ofs);
+		RS::get_singleton()->instance_reset_physics_interpolation(sb->instance_xray);
+		RS::get_singleton()->instance_reset_physics_interpolation(sb->instance_xray_ofs);
 	}
 #endif // _3D_DISABLED
 }
@@ -2027,12 +2032,14 @@ void RuntimeNodeSelect::_update_selection_drag(const Point2 &p_end_pos) {
 	if (root->is_canvas_transform_override_enabled()) {
 		Transform2D xform = root->get_canvas_transform_override();
 		RS::get_singleton()->canvas_item_set_transform(sel_drag_ci, xform);
+		RS::get_singleton()->canvas_item_reset_physics_interpolation(sel_drag_ci);
 
 		selection_drawing.position = xform.affine_inverse().xform(selection_drag_area.position);
 		selection_drawing.size = xform.affine_inverse().xform(p_end_pos);
 		thickness = MAX(1, Math::ceil(1 / view_2d_zoom));
 	} else {
 		RS::get_singleton()->canvas_item_set_transform(sel_drag_ci, Transform2D());
+		RS::get_singleton()->canvas_item_reset_physics_interpolation(sel_drag_ci);
 
 		selection_drawing.position = selection_drag_area.position;
 		selection_drawing.size = p_end_pos;