From c6a96fc3607c050fd064946fe3a6ac23a66dbd76 Mon Sep 17 00:00:00 2001 From: Chaosus Date: Wed, 21 Feb 2018 17:14:26 +0300 Subject: [PATCH] Enable snapping when control key pressed (cherry picked from commit 24c170555d57ccbbb270f02d0b5d3e98f99b8729) --- editor/plugins/spatial_editor_plugin.cpp | 3 +++ editor/plugins/spatial_editor_plugin.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 63762651d72..fa7a2269d04 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -4674,6 +4674,8 @@ void SpatialEditor::_unhandled_key_input(Ref p_event) { if (!is_visible_in_tree() || get_viewport()->gui_has_modal_stack()) return; + snap_key_enabled = Input::get_singleton()->is_key_pressed(KEY_CONTROL); + Ref k = p_event; if (k.is_valid()) { @@ -4941,6 +4943,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) { editor_selection->add_editor_plugin(this); snap_enabled = false; + snap_key_enabled = false; tool_mode = TOOL_MODE_SELECT; hbc_menu = memnew(HBoxContainer); diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 55866cac999..d0042be31d3 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -505,6 +505,7 @@ private: ConfirmationDialog *settings_dialog; bool snap_enabled; + bool snap_key_enabled; LineEdit *snap_translate; LineEdit *snap_rotate; LineEdit *snap_scale; @@ -577,7 +578,7 @@ public: ToolMode get_tool_mode() const { return tool_mode; } bool are_local_coords_enabled() const { return tool_option_button[SpatialEditor::TOOL_OPT_LOCAL_COORDS]->is_pressed(); } - bool is_snap_enabled() const { return snap_enabled; } + bool is_snap_enabled() const { return snap_enabled ^ snap_key_enabled; } float get_translate_snap() const { return snap_translate->get_text().to_double(); } float get_rotate_snap() const { return snap_rotate->get_text().to_double(); } float get_scale_snap() const { return snap_scale->get_text().to_double(); }