Skip to content

Commit aeb526c

Browse files
committed
Fix issues with InputMap::load_from_project_settings() when called in tool script
1 parent 4fb1e11 commit aeb526c

File tree

4 files changed

+33
-16
lines changed

4 files changed

+33
-16
lines changed

core/input/input_map.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ void InputMap::_bind_methods() {
5858
ClassDB::bind_method(D_METHOD("action_get_events", "action"), &InputMap::_action_get_events);
5959
ClassDB::bind_method(D_METHOD("event_is_action", "event", "action", "exact_match"), &InputMap::event_is_action, DEFVAL(false));
6060
ClassDB::bind_method(D_METHOD("load_from_project_settings"), &InputMap::load_from_project_settings);
61+
62+
ADD_SIGNAL(MethodInfo("project_settings_loaded"));
6163
}
6264

6365
/**
@@ -340,6 +342,8 @@ void InputMap::load_from_project_settings() {
340342
action_add_event(name, event);
341343
}
342344
}
345+
346+
emit_signal("project_settings_loaded");
343347
}
344348

345349
struct _BuiltinActionDisplayName {

doc/classes/InputMap.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,11 @@
117117
</description>
118118
</method>
119119
</methods>
120+
<signals>
121+
<signal name="project_settings_loaded">
122+
<description>
123+
Emitted when the [ProjectSettings] [InputMap] has been loaded.
124+
</description>
125+
</signal>
126+
</signals>
120127
</class>

editor/plugins/node_3d_editor_plugin.cpp

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5694,6 +5694,25 @@ void Node3DEditorViewport::_add_advanced_debug_draw_mode_item(PopupMenu *p_popup
56945694
display_submenu->set_item_tooltip(-1, tooltip);
56955695
}
56965696

5697+
void Node3DEditorViewport::_load_viewport_inputs() {
5698+
// Registering with Key::NONE intentionally creates an empty Array.
5699+
register_shortcut_action("spatial_editor/viewport_orbit_modifier_1", TTRC("Viewport Orbit Modifier 1"), Key::NONE);
5700+
register_shortcut_action("spatial_editor/viewport_orbit_modifier_2", TTRC("Viewport Orbit Modifier 2"), Key::NONE);
5701+
register_shortcut_action("spatial_editor/viewport_pan_modifier_1", TTRC("Viewport Pan Modifier 1"), Key::SHIFT);
5702+
register_shortcut_action("spatial_editor/viewport_pan_modifier_2", TTRC("Viewport Pan Modifier 2"), Key::NONE);
5703+
register_shortcut_action("spatial_editor/viewport_zoom_modifier_1", TTRC("Viewport Zoom Modifier 1"), Key::SHIFT);
5704+
register_shortcut_action("spatial_editor/viewport_zoom_modifier_2", TTRC("Viewport Zoom Modifier 2"), Key::CTRL);
5705+
5706+
register_shortcut_action("spatial_editor/freelook_left", TTRC("Freelook Left"), Key::A, true);
5707+
register_shortcut_action("spatial_editor/freelook_right", TTRC("Freelook Right"), Key::D, true);
5708+
register_shortcut_action("spatial_editor/freelook_forward", TTRC("Freelook Forward"), Key::W, true);
5709+
register_shortcut_action("spatial_editor/freelook_backwards", TTRC("Freelook Backwards"), Key::S, true);
5710+
register_shortcut_action("spatial_editor/freelook_up", TTRC("Freelook Up"), Key::E, true);
5711+
register_shortcut_action("spatial_editor/freelook_down", TTRC("Freelook Down"), Key::Q, true);
5712+
register_shortcut_action("spatial_editor/freelook_speed_modifier", TTRC("Freelook Speed Modifier"), Key::SHIFT);
5713+
register_shortcut_action("spatial_editor/freelook_slow_modifier", TTRC("Freelook Slow Modifier"), Key::ALT);
5714+
}
5715+
56975716
Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p_index) {
56985717
cpu_time_history_index = 0;
56995718
gpu_time_history_index = 0;
@@ -5862,22 +5881,8 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p
58625881
display_submenu->connect(SceneStringName(id_pressed), callable_mp(this, &Node3DEditorViewport::_menu_option));
58635882
view_display_menu->set_disable_shortcuts(true);
58645883

5865-
// Registering with Key::NONE intentionally creates an empty Array.
5866-
register_shortcut_action("spatial_editor/viewport_orbit_modifier_1", TTRC("Viewport Orbit Modifier 1"), Key::NONE);
5867-
register_shortcut_action("spatial_editor/viewport_orbit_modifier_2", TTRC("Viewport Orbit Modifier 2"), Key::NONE);
5868-
register_shortcut_action("spatial_editor/viewport_pan_modifier_1", TTRC("Viewport Pan Modifier 1"), Key::SHIFT);
5869-
register_shortcut_action("spatial_editor/viewport_pan_modifier_2", TTRC("Viewport Pan Modifier 2"), Key::NONE);
5870-
register_shortcut_action("spatial_editor/viewport_zoom_modifier_1", TTRC("Viewport Zoom Modifier 1"), Key::SHIFT);
5871-
register_shortcut_action("spatial_editor/viewport_zoom_modifier_2", TTRC("Viewport Zoom Modifier 2"), Key::CTRL);
5872-
5873-
register_shortcut_action("spatial_editor/freelook_left", TTRC("Freelook Left"), Key::A, true);
5874-
register_shortcut_action("spatial_editor/freelook_right", TTRC("Freelook Right"), Key::D, true);
5875-
register_shortcut_action("spatial_editor/freelook_forward", TTRC("Freelook Forward"), Key::W, true);
5876-
register_shortcut_action("spatial_editor/freelook_backwards", TTRC("Freelook Backwards"), Key::S, true);
5877-
register_shortcut_action("spatial_editor/freelook_up", TTRC("Freelook Up"), Key::E, true);
5878-
register_shortcut_action("spatial_editor/freelook_down", TTRC("Freelook Down"), Key::Q, true);
5879-
register_shortcut_action("spatial_editor/freelook_speed_modifier", TTRC("Freelook Speed Modifier"), Key::SHIFT);
5880-
register_shortcut_action("spatial_editor/freelook_slow_modifier", TTRC("Freelook Slow Modifier"), Key::ALT);
5884+
_load_viewport_inputs();
5885+
InputMap::get_singleton()->connect("project_settings_loaded", callable_mp(this, &Node3DEditorViewport::_load_viewport_inputs));
58815886

58825887
ED_SHORTCUT("spatial_editor/lock_transform_x", TTRC("Lock Transformation to X axis"), Key::X);
58835888
ED_SHORTCUT("spatial_editor/lock_transform_y", TTRC("Lock Transformation to Y axis"), Key::Y);

editor/plugins/node_3d_editor_plugin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,7 @@ class Node3DEditorViewport : public Control {
528528
void update_transform_numeric();
529529
void finish_transform();
530530

531+
void _load_viewport_inputs();
531532
void register_shortcut_action(const String &p_path, const String &p_name, Key p_keycode, bool p_physical = false);
532533
void shortcut_changed_callback(const Ref<Shortcut> p_shortcut, const String &p_shortcut_path);
533534

0 commit comments

Comments
 (0)