diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-01-24 10:05:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-24 10:05:42 +0100 |
commit | 57a057f7ff031f4593d851e351bc63fda77be535 (patch) | |
tree | ac7ea395e5872c16d8cddfa739b3cc81bae66c38 /core/input | |
parent | b56d5b6e2fdfaf0a40c60b014f534820ba06c016 (diff) | |
parent | 5250cdd150dbffc1387d8cc60bee7977b322117a (diff) |
Merge pull request #56754 from madmiraal/fix-45592
Diffstat (limited to 'core/input')
-rw-r--r-- | core/input/input.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/core/input/input.cpp b/core/input/input.cpp index 3ddb151f23..7106bd0745 100644 --- a/core/input/input.cpp +++ b/core/input/input.cpp @@ -518,18 +518,20 @@ void Input::_parse_input_event_impl(const Ref<InputEvent> &p_event, bool p_is_em Ref<InputEventMouseMotion> mm = p_event; if (mm.is_valid()) { - Point2 pos = mm->get_global_position(); - if (mouse_pos != pos) { - set_mouse_position(pos); + Point2 position = mm->get_global_position(); + if (mouse_pos != position) { + set_mouse_position(position); } + Vector2 relative = mm->get_relative(); + mouse_velocity_track.update(relative); if (event_dispatch_function && emulate_touch_from_mouse && !p_is_emulated && (mm->get_button_mask() & MouseButton::LEFT) != MouseButton::NONE) { Ref<InputEventScreenDrag> drag_event; drag_event.instantiate(); - drag_event->set_position(mm->get_position()); - drag_event->set_relative(mm->get_relative()); - drag_event->set_velocity(mm->get_velocity()); + drag_event->set_position(position); + drag_event->set_relative(relative); + drag_event->set_velocity(get_last_mouse_velocity()); event_dispatch_function(drag_event); } @@ -710,7 +712,6 @@ void Input::set_gyroscope(const Vector3 &p_gyroscope) { } void Input::set_mouse_position(const Point2 &p_posf) { - mouse_velocity_track.update(p_posf - mouse_pos); mouse_pos = p_posf; } |