Skip to content

Commit e7266c4

Browse files
committed
Allow all tool modes to select
1 parent 7893202 commit e7266c4

File tree

1 file changed

+29
-26
lines changed

1 file changed

+29
-26
lines changed

editor/plugins/node_3d_editor_plugin.cpp

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1947,35 +1947,39 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
19471947

19481948
bool node_selected = get_selected_count() > 0;
19491949

1950-
if (node_selected && ((spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT && b->is_command_or_control_pressed()) || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE)) {
1951-
begin_transform(TRANSFORM_ROTATE, false);
1952-
break;
1953-
}
1954-
1955-
if (node_selected && spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
1956-
begin_transform(TRANSFORM_TRANSLATE, false);
1957-
break;
1958-
}
1959-
1960-
if (node_selected && spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SCALE) {
1961-
begin_transform(TRANSFORM_SCALE, false);
1962-
break;
1963-
}
1964-
1965-
if (after != EditorPlugin::AFTER_GUI_INPUT_CUSTOM) {
1950+
if (after != EditorPlugin::AFTER_GUI_INPUT_CUSTOM && !b->is_alt_pressed()) {
19661951
// Single item selection.
19671952
clicked = _select_ray(b->get_position());
19681953

1969-
selection_in_progress = true;
1954+
if (clicked.is_valid() && !editor_selection->is_selected(Object::cast_to<Node>(ObjectDB::get_instance(clicked)))) {
1955+
selection_in_progress = true;
1956+
break;
1957+
}
19701958

19711959
if (clicked.is_null()) {
19721960
// Default to region select.
19731961
cursor.region_select = true;
19741962
cursor.region_begin = b->get_position();
19751963
cursor.region_end = b->get_position();
1964+
break;
19761965
}
19771966
}
19781967

1968+
if (!clicked_wants_append && node_selected && ((spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT && b->is_command_or_control_pressed()) || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE)) {
1969+
begin_transform(TRANSFORM_ROTATE, false);
1970+
break;
1971+
}
1972+
1973+
if (!clicked_wants_append && node_selected && spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
1974+
begin_transform(TRANSFORM_TRANSLATE, false);
1975+
break;
1976+
}
1977+
1978+
if (!clicked_wants_append && node_selected && spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SCALE) {
1979+
begin_transform(TRANSFORM_SCALE, false);
1980+
break;
1981+
}
1982+
19791983
surface->queue_redraw();
19801984
} else {
19811985
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_RULER) {
@@ -2031,7 +2035,6 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
20312035
set_message("");
20322036
spatial_editor->update_transform_gizmo();
20332037
}
2034-
surface->queue_redraw();
20352038
}
20362039

20372040
} break;
@@ -2117,12 +2120,10 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
21172120
} else {
21182121
const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
21192122

2120-
if (selection_in_progress && movement_threshold_passed && clicked.is_valid()) {
2121-
if (clicked_wants_append || !editor_selection->is_selected(Object::cast_to<Node>(ObjectDB::get_instance(clicked)))) {
2122-
cursor.region_select = true;
2123-
cursor.region_begin = _edit.original_mouse_pos;
2124-
clicked = ObjectID();
2125-
}
2123+
if ((selection_in_progress || clicked_wants_append) && movement_threshold_passed && clicked.is_valid()) {
2124+
cursor.region_select = true;
2125+
cursor.region_begin = _edit.original_mouse_pos;
2126+
clicked = ObjectID();
21262127
}
21272128

21282129
if (cursor.region_select) {
@@ -2131,7 +2132,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
21312132
return;
21322133
}
21332134

2134-
if (clicked.is_valid() && movement_threshold_passed) {
2135+
if (clicked.is_valid() && movement_threshold_passed && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE)) {
21352136
_compute_edit(_edit.original_mouse_pos);
21362137
clicked = ObjectID();
21372138
_edit.mode = TRANSFORM_TRANSLATE;
@@ -2141,7 +2142,9 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
21412142
return;
21422143
}
21432144

2144-
update_transform(_get_key_modifier(m) == Key::SHIFT);
2145+
if (!selection_in_progress) {
2146+
update_transform(_get_key_modifier(m) == Key::SHIFT);
2147+
}
21452148
}
21462149
} else if (m->get_button_mask().has_flag(MouseButtonMask::RIGHT) || freelook_active) {
21472150
NavigationMode change_nav_from_shortcut = _get_nav_mode_from_shortcut_check(NAVIGATION_RIGHT_MOUSE, shortcut_check_sets, false);

0 commit comments

Comments
 (0)