diff --git a/android/app/src/main/cpp/code/q3_ui/ui_atoms.c b/android/app/src/main/cpp/code/q3_ui/ui_atoms.c index 34301666..5c760c48 100644 --- a/android/app/src/main/cpp/code/q3_ui/ui_atoms.c +++ b/android/app/src/main/cpp/code/q3_ui/ui_atoms.c @@ -937,6 +937,9 @@ void UI_MouseEvent( int dx, int dy ) else if (uis.cursory > SCREEN_HEIGHT) uis.cursory = SCREEN_HEIGHT; + vr->menuCursorX = &uis.cursorx; + vr->menuCursorY = &uis.cursory; + // region test the active menu items for (i=0; initems; i++) { diff --git a/android/app/src/main/cpp/code/ui/ui_main.c b/android/app/src/main/cpp/code/ui/ui_main.c index 2315b0ed..f2fde787 100644 --- a/android/app/src/main/cpp/code/ui/ui_main.c +++ b/android/app/src/main/cpp/code/ui/ui_main.c @@ -5277,6 +5277,9 @@ void _UI_MouseEvent( int dx, int dy ) else if (uiInfo.uiDC.cursory > SCREEN_HEIGHT) uiInfo.uiDC.cursory = SCREEN_HEIGHT; + vr->menuCursorX = &uiInfo.uiDC.cursorx; + vr->menuCursorY = &uiInfo.uiDC.cursory; + if (Menu_Count() > 0) { //menuDef_t *menu = Menu_GetFocused(); //Menu_HandleMouseMove(menu, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory); diff --git a/android/app/src/main/cpp/code/vr/vr_clientinfo.h b/android/app/src/main/cpp/code/vr/vr_clientinfo.h index 98dc415e..fd9c0139 100644 --- a/android/app/src/main/cpp/code/vr/vr_clientinfo.h +++ b/android/app/src/main/cpp/code/vr/vr_clientinfo.h @@ -56,6 +56,9 @@ typedef struct { vec3_t offhandposition; vec2_t thumbstick_location[2]; //left / right thumbstick locations - used in cgame + + int *menuCursorX; + int *menuCursorY; } vr_clientinfo_t; #endif //vr_clientinfo_h \ No newline at end of file diff --git a/android/app/src/main/cpp/code/vr/vr_input.c b/android/app/src/main/cpp/code/vr/vr_input.c index ec336376..a09de576 100644 --- a/android/app/src/main/cpp/code/vr/vr_input.c +++ b/android/app/src/main/cpp/code/vr/vr_input.c @@ -452,8 +452,13 @@ static void IN_VRController( qboolean isRightController, ovrTracking remoteTrack if (vr.virtual_screen || cl.snap.ps.pm_type == PM_INTERMISSION) { - int mouse_multiplier = 10; - Com_QueueEvent(in_vrEventTime, SE_MOUSE, vr.weaponangles_delta[YAW] * mouse_multiplier, -vr.weaponangles_delta[PITCH] * mouse_multiplier, 0, NULL); + if (vr.menuCursorX && vr.menuCursorY) + { + int x = 320 - tan(vr.weaponangles[YAW] * (M_PI*2 / 360)) * 400; + int y = 240 + tan((vr.weaponangles[PITCH] + vr_weaponPitch->value) * (M_PI*2 / 360)) * 400; + *vr.menuCursorX = x; + *vr.menuCursorY = y; + } } } else { vec3_t rotation = {0};