From af17cb733abc5e5ad3ea2113c3d6a84d72feed8e Mon Sep 17 00:00:00 2001 From: Robert Yevdokimov <105675984+ryevdokimov@users.noreply.github.com> Date: Wed, 7 Jan 2026 21:57:44 -0500 Subject: [PATCH] Allow manipulating `Path3D` handles while in select mode --- editor/scene/3d/node_3d_editor_plugin.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/editor/scene/3d/node_3d_editor_plugin.cpp b/editor/scene/3d/node_3d_editor_plugin.cpp index 216c69e57068..b76b5d1c1ed6 100644 --- a/editor/scene/3d/node_3d_editor_plugin.cpp +++ b/editor/scene/3d/node_3d_editor_plugin.cpp @@ -2065,6 +2065,7 @@ void Node3DEditorViewport::_sinput(const Ref &p_event) { int subgizmo_id = seg->subgizmos_intersect_ray(camera, _edit.mouse_pos); if (subgizmo_id != -1) { ERR_CONTINUE(!se); + bool start_transform = false; if (b->is_shift_pressed()) { if (se->subgizmos.has(subgizmo_id)) { se->subgizmos.erase(subgizmo_id); @@ -2074,6 +2075,7 @@ void Node3DEditorViewport::_sinput(const Ref &p_event) { } else { se->subgizmos.clear(); se->subgizmos.insert(subgizmo_id, seg->get_subgizmo_transform(subgizmo_id)); + start_transform = spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT; } if (se->subgizmos.is_empty()) { @@ -2084,6 +2086,11 @@ void Node3DEditorViewport::_sinput(const Ref &p_event) { seg->redraw(); spatial_editor->update_transform_gizmo(); + + if (start_transform) { + begin_transform(TRANSFORM_TRANSLATE, false); + } + intersected_subgizmo = true; break; }