In order to read the joystick values on the XR controllers I’m using InputAction.started, InputAction.performed, and InputAction.canceled to detect when the stick position is changed. This is working on every device that I’ve tested (Oculus Quest, Vive Wands, Valve Index, etc.) except one configuration.
If you are using the SteamVR as your OpenXR runtime and you’re using an HP Reverb G2 headset, the joystick values don’t update correctly through these events.
If you poll the InputAction in the Update method the values are correct, but the event-based values are not. The event-based values “stall” if you move the joystick in a circle.
The broken chain:
HP Reverb G2->Mixed Reality Portal->SteamVR->OpenXR->Unity Application
Working chains:
HP Reverb G2->Mixed Reality Portal->OpenXR->Unity Application
Oculus QuestLink->Oculus App->OpenXR->Unity Application
Vive Headset->SteamVR->OpenXR->Unity Application
I’m using the same pattern (started, performed, canceled) to read values from the index trigger and grip trigger, and those are working correctly on all platforms, it’s only the joystick that stalls.