Fix issues with InputMap::load_from_project_settings() when called in tool script
(cherry picked from commit bb3c8a06820511c7e9f88dcaf9db88ea677d6dfd)
This commit is contained in:
committed by
Thaddeus Crews
parent
ee5ac6c1d4
commit
e5c178ccf5
@@ -54,6 +54,8 @@ void InputMap::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("action_get_events", "action"), &InputMap::_action_get_events);
|
||||
ClassDB::bind_method(D_METHOD("event_is_action", "event", "action", "exact_match"), &InputMap::event_is_action, DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("load_from_project_settings"), &InputMap::load_from_project_settings);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("project_settings_loaded"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -329,6 +331,8 @@ void InputMap::load_from_project_settings() {
|
||||
action_add_event(name, event);
|
||||
}
|
||||
}
|
||||
|
||||
emit_signal("project_settings_loaded");
|
||||
}
|
||||
|
||||
struct _BuiltinActionDisplayName {
|
||||
|
||||
@@ -117,4 +117,11 @@
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<signals>
|
||||
<signal name="project_settings_loaded">
|
||||
<description>
|
||||
Emitted when the [ProjectSettings] [InputMap] has been loaded.
|
||||
</description>
|
||||
</signal>
|
||||
</signals>
|
||||
</class>
|
||||
|
||||
@@ -6085,6 +6085,27 @@ void Node3DEditorViewport::_add_advanced_debug_draw_mode_item(PopupMenu *p_popup
|
||||
display_submenu->set_item_metadata(-1, item_data); // Tooltip is assigned in NOTIFICATION_TRANSLATION_CHANGED.
|
||||
}
|
||||
|
||||
void Node3DEditorViewport::_load_viewport_inputs() {
|
||||
// Registering with Key::NONE intentionally creates an empty Array.
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_modifier_1", TTRC("Viewport Orbit Modifier 1"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_modifier_2", TTRC("Viewport Orbit Modifier 2"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_snap_modifier_1", TTRC("Viewport Orbit Snap Modifier 1"), Key::ALT);
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_snap_modifier_2", TTRC("Viewport Orbit Snap Modifier 2"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_pan_modifier_1", TTRC("Viewport Pan Modifier 1"), Key::SHIFT);
|
||||
register_shortcut_action("spatial_editor/viewport_pan_modifier_2", TTRC("Viewport Pan Modifier 2"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_zoom_modifier_1", TTRC("Viewport Zoom Modifier 1"), Key::CTRL);
|
||||
register_shortcut_action("spatial_editor/viewport_zoom_modifier_2", TTRC("Viewport Zoom Modifier 2"), Key::NONE);
|
||||
|
||||
register_shortcut_action("spatial_editor/freelook_left", TTRC("Freelook Left"), Key::A, true);
|
||||
register_shortcut_action("spatial_editor/freelook_right", TTRC("Freelook Right"), Key::D, true);
|
||||
register_shortcut_action("spatial_editor/freelook_forward", TTRC("Freelook Forward"), Key::W, true);
|
||||
register_shortcut_action("spatial_editor/freelook_backwards", TTRC("Freelook Backwards"), Key::S, true);
|
||||
register_shortcut_action("spatial_editor/freelook_up", TTRC("Freelook Up"), Key::E, true);
|
||||
register_shortcut_action("spatial_editor/freelook_down", TTRC("Freelook Down"), Key::Q, true);
|
||||
register_shortcut_action("spatial_editor/freelook_speed_modifier", TTRC("Freelook Speed Modifier"), Key::SHIFT);
|
||||
register_shortcut_action("spatial_editor/freelook_slow_modifier", TTRC("Freelook Slow Modifier"), Key::ALT);
|
||||
}
|
||||
|
||||
Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p_index) {
|
||||
cpu_time_history_index = 0;
|
||||
gpu_time_history_index = 0;
|
||||
@@ -6257,24 +6278,8 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p
|
||||
display_submenu->connect(SceneStringName(id_pressed), callable_mp(this, &Node3DEditorViewport::_menu_option));
|
||||
view_display_menu->set_disable_shortcuts(true);
|
||||
|
||||
// Registering with Key::NONE intentionally creates an empty Array.
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_modifier_1", TTRC("Viewport Orbit Modifier 1"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_modifier_2", TTRC("Viewport Orbit Modifier 2"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_snap_modifier_1", TTRC("Viewport Orbit Snap Modifier 1"), Key::ALT);
|
||||
register_shortcut_action("spatial_editor/viewport_orbit_snap_modifier_2", TTRC("Viewport Orbit Snap Modifier 2"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_pan_modifier_1", TTRC("Viewport Pan Modifier 1"), Key::SHIFT);
|
||||
register_shortcut_action("spatial_editor/viewport_pan_modifier_2", TTRC("Viewport Pan Modifier 2"), Key::NONE);
|
||||
register_shortcut_action("spatial_editor/viewport_zoom_modifier_1", TTRC("Viewport Zoom Modifier 1"), Key::CTRL);
|
||||
register_shortcut_action("spatial_editor/viewport_zoom_modifier_2", TTRC("Viewport Zoom Modifier 2"), Key::NONE);
|
||||
|
||||
register_shortcut_action("spatial_editor/freelook_left", TTRC("Freelook Left"), Key::A, true);
|
||||
register_shortcut_action("spatial_editor/freelook_right", TTRC("Freelook Right"), Key::D, true);
|
||||
register_shortcut_action("spatial_editor/freelook_forward", TTRC("Freelook Forward"), Key::W, true);
|
||||
register_shortcut_action("spatial_editor/freelook_backwards", TTRC("Freelook Backwards"), Key::S, true);
|
||||
register_shortcut_action("spatial_editor/freelook_up", TTRC("Freelook Up"), Key::E, true);
|
||||
register_shortcut_action("spatial_editor/freelook_down", TTRC("Freelook Down"), Key::Q, true);
|
||||
register_shortcut_action("spatial_editor/freelook_speed_modifier", TTRC("Freelook Speed Modifier"), Key::SHIFT);
|
||||
register_shortcut_action("spatial_editor/freelook_slow_modifier", TTRC("Freelook Slow Modifier"), Key::ALT);
|
||||
_load_viewport_inputs();
|
||||
InputMap::get_singleton()->connect("project_settings_loaded", callable_mp(this, &Node3DEditorViewport::_load_viewport_inputs));
|
||||
|
||||
ED_SHORTCUT("spatial_editor/lock_transform_x", TTRC("Lock Transformation to X axis"), Key::X);
|
||||
ED_SHORTCUT("spatial_editor/lock_transform_y", TTRC("Lock Transformation to Y axis"), Key::Y);
|
||||
|
||||
@@ -544,6 +544,7 @@ private:
|
||||
void update_transform_numeric();
|
||||
void finish_transform();
|
||||
|
||||
void _load_viewport_inputs();
|
||||
void register_shortcut_action(const String &p_path, const String &p_name, Key p_keycode, bool p_physical = false);
|
||||
void shortcut_changed_callback(const Ref<Shortcut> p_shortcut, const String &p_shortcut_path);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user