From 82902656ac6c60c40979e9cb513b65d96119f917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Tue, 5 Mar 2019 22:31:02 +0100 Subject: Improve/fix picking Acknowledge mouse button events as position tellers (to make picking more solid; for instance, the touch mouse is raised with a mouse unpressed event that may have a more current position) Forget mouse position for physics if touch mouse raised (because the position known as last is no longer meaningful) Remove needless check for mouse over/exit (now there's code to inject an spurious move for cases where camera/objects have moved) Restrict 2D mouse over/exit to mouse events (including emulated from touch; true touches shouldn't trigger the signals) Fixes #26460. --- main/input_default.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'main') diff --git a/main/input_default.cpp b/main/input_default.cpp index e8133f9eba..65910b34bc 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -355,6 +355,7 @@ void InputDefault::_parse_input_event_impl(const Ref &p_event, bool Ref button_event; button_event.instance(); + button_event->set_device(-1); button_event->set_position(st->get_position()); button_event->set_global_position(st->get_position()); button_event->set_pressed(st->is_pressed()); @@ -383,6 +384,7 @@ void InputDefault::_parse_input_event_impl(const Ref &p_event, bool Ref motion_event; motion_event.instance(); + motion_event->set_device(-1); motion_event->set_position(sd->get_position()); motion_event->set_global_position(sd->get_position()); motion_event->set_relative(sd->get_relative()); @@ -600,6 +602,7 @@ void InputDefault::ensure_touch_mouse_raised() { Ref button_event; button_event.instance(); + button_event->set_device(-1); button_event->set_position(mouse_pos); button_event->set_global_position(mouse_pos); button_event->set_pressed(false); -- cgit v1.2.3