Skip to content

Commit 3e8960b

Browse files
committed
Rename Select Mode to Transform Mode, and create a new Select Mode without transform gizmo
1 parent c374ce2 commit 3e8960b

File tree

4 files changed

+34
-18
lines changed

4 files changed

+34
-18
lines changed

editor/icons/ToolTransform.svg

Lines changed: 1 addition & 0 deletions
Loading

editor/plugins/game_view_plugin.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,7 @@ GameView::GameView(Ref<GameViewDebugger> p_debugger, WindowWrapper *p_wrapper) {
984984
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_pressed(true);
985985
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_theme_type_variation(SceneStringName(FlatButton));
986986
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->connect(SceneStringName(pressed), callable_mp(this, &GameView::_select_mode_pressed).bind(RuntimeNodeSelect::SELECT_MODE_SINGLE));
987-
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTRC("Select Mode"), Key::Q));
987+
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTRC("Select Mode"), Key::V));
988988
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_shortcut_context(this);
989989
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Alt+RMB: Show list of all nodes at position clicked."));
990990

editor/plugins/node_3d_editor_plugin.cpp

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,7 +1298,7 @@ bool Node3DEditorViewport::_transform_gizmo_select(const Vector2 &p_screenpos, b
12981298

12991299
Transform3D gt = spatial_editor->get_gizmo_transform();
13001300

1301-
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
1301+
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
13021302
int col_axis = -1;
13031303
real_t col_d = 1e20;
13041304

@@ -1364,7 +1364,7 @@ bool Node3DEditorViewport::_transform_gizmo_select(const Vector2 &p_screenpos, b
13641364
}
13651365
}
13661366

1367-
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) {
1367+
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) {
13681368
int col_axis = -1;
13691369

13701370
Vector3 hit_position;
@@ -1971,7 +1971,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
19711971

19721972
selection_in_progress = true;
19731973

1974-
if (clicked.is_null()) {
1974+
if (clicked.is_null() || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT) {
19751975
// Default to region select.
19761976
cursor.region_select = true;
19771977
cursor.region_begin = b->get_position();
@@ -2000,15 +2000,15 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
20002000
if (after != EditorPlugin::AFTER_GUI_INPUT_CUSTOM) {
20012001
selection_in_progress = false;
20022002

2003-
if (clicked.is_valid()) {
2003+
if (clicked.is_valid() && !movement_threshold_passed) {
20042004
_select_clicked(false);
2005-
}
2006-
2007-
if (cursor.region_select) {
2005+
} else if (cursor.region_select) {
20082006
_select_region();
2009-
cursor.region_select = false;
20102007
surface->queue_redraw();
20112008
}
2009+
2010+
movement_threshold_passed = false;
2011+
cursor.region_select = false;
20122012
}
20132013

20142014
if (!_edit.instant && _edit.mode != TRANSFORM_NONE) {
@@ -2118,7 +2118,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
21182118
if (change_nav_from_shortcut != NAVIGATION_NONE) {
21192119
nav_mode = change_nav_from_shortcut;
21202120
} else {
2121-
const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
2121+
movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
21222122

21232123
if (selection_in_progress && movement_threshold_passed && clicked.is_valid()) {
21242124
if (clicked_wants_append || !editor_selection->is_selected(ObjectDB::get_instance<Node>(clicked))) {
@@ -2134,7 +2134,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
21342134
return;
21352135
}
21362136

2137-
if (clicked.is_valid() && movement_threshold_passed) {
2137+
if (clicked.is_valid() && movement_threshold_passed && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE)) {
21382138
_compute_edit(_edit.original_mouse_pos);
21392139
clicked = ObjectID();
21402140
_edit.mode = TRANSFORM_TRANSLATE;
@@ -3355,7 +3355,7 @@ void Node3DEditorViewport::_draw() {
33553355
get_theme_stylebox(SNAME("FocusViewport"), EditorStringName(EditorStyles))->draw(surface->get_canvas_item(), r);
33563356
}
33573357

3358-
if (cursor.region_select) {
3358+
if (cursor.region_select && movement_threshold_passed) {
33593359
const Rect2 selection_rect = Rect2(cursor.region_begin, cursor.region_end - cursor.region_begin);
33603360

33613361
surface->draw_rect(
@@ -4122,11 +4122,11 @@ void Node3DEditorViewport::update_transform_gizmo_view() {
41224122
axis_angle.basis.scale(scale);
41234123
axis_angle.origin = xform.origin;
41244124
RenderingServer::get_singleton()->instance_set_transform(move_gizmo_instance[i], axis_angle);
4125-
RenderingServer::get_singleton()->instance_set_visible(move_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE));
4125+
RenderingServer::get_singleton()->instance_set_visible(move_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE));
41264126
RenderingServer::get_singleton()->instance_set_transform(move_plane_gizmo_instance[i], axis_angle);
4127-
RenderingServer::get_singleton()->instance_set_visible(move_plane_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE));
4127+
RenderingServer::get_singleton()->instance_set_visible(move_plane_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE));
41284128
RenderingServer::get_singleton()->instance_set_transform(rotate_gizmo_instance[i], axis_angle);
4129-
RenderingServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE));
4129+
RenderingServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE));
41304130
RenderingServer::get_singleton()->instance_set_transform(scale_gizmo_instance[i], axis_angle);
41314131
RenderingServer::get_singleton()->instance_set_visible(scale_gizmo_instance[i], show_gizmo && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SCALE));
41324132
RenderingServer::get_singleton()->instance_set_transform(scale_plane_gizmo_instance[i], axis_angle);
@@ -4144,7 +4144,7 @@ void Node3DEditorViewport::update_transform_gizmo_view() {
41444144
xform.orthonormalize();
41454145
xform.basis.scale(scale);
41464146
RenderingServer::get_singleton()->instance_set_transform(rotate_gizmo_instance[3], xform);
4147-
RenderingServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[3], spatial_editor->is_gizmo_visible() && !_edit.instant && transform_gizmo_visible && !collision_reposition && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE));
4147+
RenderingServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[3], spatial_editor->is_gizmo_visible() && !_edit.instant && transform_gizmo_visible && !collision_reposition && (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_TRANSFORM || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE));
41484148
}
41494149

41504150
void Node3DEditorViewport::set_state(const Dictionary &p_state) {
@@ -6844,6 +6844,7 @@ void Node3DEditor::_menu_item_pressed(int p_option) {
68446844
EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
68456845
switch (p_option) {
68466846
case MENU_TOOL_SELECT:
6847+
case MENU_TOOL_TRANSFORM:
68476848
case MENU_TOOL_MOVE:
68486849
case MENU_TOOL_ROTATE:
68496850
case MENU_TOOL_SCALE:
@@ -8254,6 +8255,7 @@ void Node3DEditor::_add_environment_to_scene(bool p_already_added_sun) {
82548255

82558256
void Node3DEditor::_update_theme() {
82568257
tool_button[TOOL_MODE_SELECT]->set_button_icon(get_editor_theme_icon(SNAME("ToolSelect")));
8258+
tool_button[TOOL_MODE_TRANSFORM]->set_button_icon(get_editor_theme_icon(SNAME("ToolTransform")));
82578259
tool_button[TOOL_MODE_MOVE]->set_button_icon(get_editor_theme_icon(SNAME("ToolMove")));
82588260
tool_button[TOOL_MODE_ROTATE]->set_button_icon(get_editor_theme_icon(SNAME("ToolRotate")));
82598261
tool_button[TOOL_MODE_SCALE]->set_button_icon(get_editor_theme_icon(SNAME("ToolScale")));
@@ -9108,12 +9110,22 @@ Node3DEditor::Node3DEditor() {
91089110
tool_button[TOOL_MODE_SELECT]->set_theme_type_variation(SceneStringName(FlatButton));
91099111
tool_button[TOOL_MODE_SELECT]->set_pressed(true);
91109112
tool_button[TOOL_MODE_SELECT]->connect(SceneStringName(pressed), callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_TOOL_SELECT));
9111-
tool_button[TOOL_MODE_SELECT]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTRC("Select Mode"), Key::Q, true));
9113+
tool_button[TOOL_MODE_SELECT]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTRC("Select Mode"), Key::V, true));
91129114
tool_button[TOOL_MODE_SELECT]->set_shortcut_context(this);
9113-
tool_button[TOOL_MODE_SELECT]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.") + "\n" + TTR("(Available in all modes.)"));
9115+
tool_button[TOOL_MODE_SELECT]->set_tooltip_text(TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.") + "\n" + TTR("(Available in all modes.)"));
91149116
tool_button[TOOL_MODE_SELECT]->set_accessibility_name(TTRC("Select Mode"));
91159117
main_menu_hbox->add_child(memnew(VSeparator));
91169118

9119+
tool_button[TOOL_MODE_TRANSFORM] = memnew(Button);
9120+
main_menu_hbox->add_child(tool_button[TOOL_MODE_TRANSFORM]);
9121+
tool_button[TOOL_MODE_TRANSFORM]->set_toggle_mode(true);
9122+
tool_button[TOOL_MODE_TRANSFORM]->set_theme_type_variation(SceneStringName(FlatButton));
9123+
tool_button[TOOL_MODE_TRANSFORM]->connect(SceneStringName(pressed), callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_TOOL_TRANSFORM));
9124+
tool_button[TOOL_MODE_TRANSFORM]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_transform", TTRC("Transform Mode"), Key::Q, true));
9125+
tool_button[TOOL_MODE_TRANSFORM]->set_shortcut_context(this);
9126+
tool_button[TOOL_MODE_TRANSFORM]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.") + "\n" + TTR("(Available in all modes.)"));
9127+
tool_button[TOOL_MODE_SELECT]->set_accessibility_name(TTRC("Transform Mode"));
9128+
91179129
tool_button[TOOL_MODE_MOVE] = memnew(Button);
91189130
main_menu_hbox->add_child(tool_button[TOOL_MODE_MOVE]);
91199131
tool_button[TOOL_MODE_MOVE]->set_toggle_mode(true);

editor/plugins/node_3d_editor_plugin.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ class Node3DEditorViewport : public Control {
332332
Vector<Node3D *> selection_results_menu;
333333
bool clicked_wants_append = false;
334334
bool selection_in_progress = false;
335+
bool movement_threshold_passed = false;
335336

336337
PopupMenu *selection_menu = nullptr;
337338

@@ -636,6 +637,7 @@ class Node3DEditor : public VBoxContainer {
636637

637638
enum ToolMode {
638639
TOOL_MODE_SELECT,
640+
TOOL_MODE_TRANSFORM,
639641
TOOL_MODE_MOVE,
640642
TOOL_MODE_ROTATE,
641643
TOOL_MODE_SCALE,
@@ -736,6 +738,7 @@ class Node3DEditor : public VBoxContainer {
736738

737739
enum MenuOption {
738740
MENU_TOOL_SELECT,
741+
MENU_TOOL_TRANSFORM,
739742
MENU_TOOL_MOVE,
740743
MENU_TOOL_ROTATE,
741744
MENU_TOOL_SCALE,

0 commit comments

Comments
 (0)