--- a/gfx/vr/gfxVROculus.cpp
+++ b/gfx/vr/gfxVROculus.cpp
@@ -1673,19 +1673,21 @@ VRSystemManagerOculus::HandleInput()
return;
}
for (uint32_t i = 0; i < mOculusController.Length(); ++i) {
controller = mOculusController[i];
const GamepadHand hand = controller->GetHand();
const uint32_t handIdx = static_cast<uint32_t>(hand) - 1;
uint32_t buttonIdx = 0;
+ ovrHandType oculusHandType;
switch (hand) {
case dom::GamepadHand::Left:
+ oculusHandType = ovrHand_Left;
HandleButtonPress(i, buttonIdx, ovrButton_LThumb, inputState.Buttons,
inputState.Touches);
++buttonIdx;
HandleIndexTriggerPress(i, buttonIdx, inputState.IndexTrigger[handIdx]);
++buttonIdx;
HandleHandTriggerPress(i, buttonIdx, inputState.HandTrigger[handIdx]);
++buttonIdx;
HandleButtonPress(i, buttonIdx, ovrButton_X, inputState.Buttons,
@@ -1693,16 +1695,17 @@ VRSystemManagerOculus::HandleInput()
++buttonIdx;
HandleButtonPress(i, buttonIdx, ovrButton_Y, inputState.Buttons,
inputState.Touches);
++buttonIdx;
HandleTouchEvent(i, buttonIdx, ovrTouch_LThumbRest, inputState.Touches);
++buttonIdx;
break;
case dom::GamepadHand::Right:
+ oculusHandType = ovrHand_Right;
HandleButtonPress(i, buttonIdx, ovrButton_RThumb, inputState.Buttons,
inputState.Touches);
++buttonIdx;
HandleIndexTriggerPress(i, buttonIdx, inputState.IndexTrigger[handIdx]);
++buttonIdx;
HandleHandTriggerPress(i, buttonIdx, inputState.HandTrigger[handIdx]);
++buttonIdx;
HandleButtonPress(i, buttonIdx, ovrButton_A, inputState.Buttons,
@@ -1717,20 +1720,20 @@ VRSystemManagerOculus::HandleInput()
default:
MOZ_ASSERT(false);
break;
}
controller->SetButtonPressed(inputState.Buttons);
controller->SetButtonTouched(inputState.Touches);
axis = static_cast<uint32_t>(OculusControllerAxisType::ThumbstickXAxis);
- HandleAxisMove(i, axis, inputState.Thumbstick[i].x);
+ HandleAxisMove(i, axis, inputState.Thumbstick[oculusHandType].x);
axis = static_cast<uint32_t>(OculusControllerAxisType::ThumbstickYAxis);
- HandleAxisMove(i, axis, -inputState.Thumbstick[i].y);
+ HandleAxisMove(i, axis, -inputState.Thumbstick[oculusHandType].y);
// Process pose state.
GamepadPoseState poseState;
GetControllerPoseState(handIdx, poseState);
HandlePoseTracking(i, poseState, controller);
}
}