Quellcode durchsuchen

Enable snapping when control key pressed

Chaosus vor 7 Jahren
Ursprung
Commit
24c170555d
2 geänderte Dateien mit 5 neuen und 1 gelöschten Zeilen
  1. 3 0
      editor/plugins/spatial_editor_plugin.cpp
  2. 2 1
      editor/plugins/spatial_editor_plugin.h

+ 3 - 0
editor/plugins/spatial_editor_plugin.cpp

@@ -4691,6 +4691,8 @@ void SpatialEditor::_unhandled_key_input(Ref<InputEvent> p_event) {
 	if (!is_visible_in_tree() || get_viewport()->gui_has_modal_stack())
 	if (!is_visible_in_tree() || get_viewport()->gui_has_modal_stack())
 		return;
 		return;
 
 
+	snap_key_enabled = Input::get_singleton()->is_key_pressed(KEY_CONTROL);
+
 	Ref<InputEventKey> k = p_event;
 	Ref<InputEventKey> k = p_event;
 
 
 	if (k.is_valid()) {
 	if (k.is_valid()) {
@@ -4962,6 +4964,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
 	editor_selection->add_editor_plugin(this);
 	editor_selection->add_editor_plugin(this);
 
 
 	snap_enabled = false;
 	snap_enabled = false;
+	snap_key_enabled = false;
 	tool_mode = TOOL_MODE_SELECT;
 	tool_mode = TOOL_MODE_SELECT;
 
 
 	hbc_menu = memnew(HBoxContainer);
 	hbc_menu = memnew(HBoxContainer);

+ 2 - 1
editor/plugins/spatial_editor_plugin.h

@@ -505,6 +505,7 @@ private:
 	ConfirmationDialog *settings_dialog;
 	ConfirmationDialog *settings_dialog;
 
 
 	bool snap_enabled;
 	bool snap_enabled;
+	bool snap_key_enabled;
 	LineEdit *snap_translate;
 	LineEdit *snap_translate;
 	LineEdit *snap_rotate;
 	LineEdit *snap_rotate;
 	LineEdit *snap_scale;
 	LineEdit *snap_scale;
@@ -579,7 +580,7 @@ public:
 
 
 	ToolMode get_tool_mode() const { return tool_mode; }
 	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 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_translate_snap() const { return snap_translate->get_text().to_double(); }
 	float get_rotate_snap() const { return snap_rotate->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(); }
 	float get_scale_snap() const { return snap_scale->get_text().to_double(); }