浏览代码

Fix offset in Viewport drag movement

The initial offset was using the mouse position when the threshold
was reached instead of the initial click position. This was adding
the drag threshold distance as an extra offset to the final
transformation.

Now the offset is calculated from the initial click position.
Pablo Dobarro 3 年之前
父节点
当前提交
cfacd9c057
共有 2 个文件被更改,包括 2 次插入2 次删除
  1. 1 1
      editor/plugins/canvas_item_editor_plugin.cpp
  2. 1 1
      editor/plugins/node_3d_editor_plugin.cpp

+ 1 - 1
editor/plugins/canvas_item_editor_plugin.cpp

@@ -2339,7 +2339,7 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
 
 				if (selection2.size() > 0) {
 					drag_type = DRAG_MOVE;
-					drag_from = click;
+					drag_from = drag_start_origin;
 					_save_canvas_item_state(drag_selection);
 				}
 				return true;

+ 1 - 1
editor/plugins/node_3d_editor_plugin.cpp

@@ -1749,7 +1749,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
 			} else {
 				const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
 				if (clicked.is_valid() && movement_threshold_passed) {
-					_compute_edit(_edit.mouse_pos);
+					_compute_edit(_edit.original_mouse_pos);
 					clicked = ObjectID();
 
 					_edit.mode = TRANSFORM_TRANSLATE;