From 8b1ec31a4b766e587857d3013e35c83ade333a34 Mon Sep 17 00:00:00 2001 From: David Snopek Date: Wed, 29 Nov 2023 14:54:45 -0600 Subject: [PATCH] Fix touch events in WebXR with an "immersive-ar" session (cherry picked from commit 5ea11fb481e3ac1d4f810051652c5a1f583069a3) --- modules/webxr/webxr_interface_js.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/webxr/webxr_interface_js.cpp b/modules/webxr/webxr_interface_js.cpp index a26d9d9636c..2d0ff4c0618 100644 --- a/modules/webxr/webxr_interface_js.cpp +++ b/modules/webxr/webxr_interface_js.cpp @@ -562,8 +562,15 @@ Vector2 WebXRInterfaceJS::_get_joy_vector_from_axes(int *p_axes) { } Vector2 WebXRInterfaceJS::_get_screen_position_from_joy_vector(const Vector2 &p_joy_vector) { + SceneTree *scene_tree = Object::cast_to(OS::get_singleton()->get_main_loop()); + if (!scene_tree) { + return Vector2(); + } + + Viewport *viewport = scene_tree->get_root(); + Vector2 position_percentage((p_joy_vector.x + 1.0f) / 2.0f, ((p_joy_vector.y) + 1.0f) / 2.0f); - Vector2 position = get_render_targetsize() * position_percentage; + Vector2 position = viewport->get_size() * position_percentage; return position; }