1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 #include "OpenVRDefaultMapper.h"
8 
9 #include "moz_external_vr.h"
10 #include "VRSession.h"
11 
12 namespace mozilla::gfx {
13 
UpdateButtons(VRControllerState & aControllerState,ControllerInfo & aControllerInfo)14 void OpenVRDefaultMapper::UpdateButtons(VRControllerState& aControllerState,
15                                         ControllerInfo& aControllerInfo) {
16   mNumButtons = mNumAxes = 0;
17   // Button 0: Trigger
18   GetTriggerValueFromAction(aControllerState,
19                             aControllerInfo.mActionTrigger_Value);
20   // Button 1: Grip
21   GetButtonValueFromAction(aControllerState,
22                            aControllerInfo.mActionGrip_Pressed,
23                            aControllerInfo.mActionGrip_Touched);
24   // Button 2: Touchpad.
25   GetButtonValueFromAction(aControllerState,
26                            aControllerInfo.mActionTrackpad_Pressed,
27                            aControllerInfo.mActionTrackpad_Touched);
28   // Button 3: Thumbstick
29   GetButtonValueFromAction(aControllerState,
30                            aControllerInfo.mActionThumbstick_Pressed,
31                            aControllerInfo.mActionThumbstick_Touched);
32   // Button 4: Menu
33   GetButtonValueFromAction(aControllerState,
34                            aControllerInfo.mActionMenu_Pressed,
35                            aControllerInfo.mActionMenu_Touched);
36   // Button 5: A
37   GetButtonValueFromAction(aControllerState, aControllerInfo.mActionA_Pressed,
38                            aControllerInfo.mActionA_Touched);
39   // Button 6: B
40   GetButtonValueFromAction(aControllerState, aControllerInfo.mActionB_Pressed,
41                            aControllerInfo.mActionB_Touched);
42   // Button 7: Bumper
43   GetButtonValueFromAction(aControllerState,
44                            aControllerInfo.mActionBumper_Pressed,
45                            aControllerInfo.mActionBumper_Pressed);
46   // Button 8: Finger index
47   GetTriggerValueFromAction(aControllerState,
48                             aControllerInfo.mActionFingerIndex_Value);
49   // Button 9: Finger middle
50   GetTriggerValueFromAction(aControllerState,
51                             aControllerInfo.mActionFingerMiddle_Value);
52   // Button 10: Finger ring
53   GetTriggerValueFromAction(aControllerState,
54                             aControllerInfo.mActionFingerRing_Value);
55   // Button 11: Finger pinky
56   GetTriggerValueFromAction(aControllerState,
57                             aControllerInfo.mActionFingerPinky_Value);
58 
59   // Axis 0, 1: Touchpad
60   GetAxisValueFromAction(aControllerState,
61                          aControllerInfo.mActionTrackpad_Analog);
62   // Axis 2, 3: Thumbstick
63   GetAxisValueFromAction(aControllerState,
64                          aControllerInfo.mActionThumbstick_Analog);
65 
66   aControllerState.numButtons = mNumButtons;
67   aControllerState.numAxes = mNumAxes;
68 }
69 
70 }  // namespace mozilla::gfx