Overte C++ Documentation
Actions.h
1 //
2 // Created by Bradley Austin Davis on 2015/10/19
3 // Copyright 2015 High Fidelity, Inc.
4 //
5 // Distributed under the Apache License, Version 2.0.
6 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
7 //
8 
9 #pragma once
10 #ifndef hifi_controller_Actions_h
11 #define hifi_controller_Actions_h
12 
13 #include <QtCore/QObject>
14 #include <QtCore/QVector>
15 
16 #include "InputDevice.h"
17 
18 namespace controller {
19 
20 // Actions are the output channels of the Mapper, that's what the InputChannel map to
21 // For now the Actions are hardcoded, this is bad, but we will fix that in the near future
22 enum class Action {
23  TRANSLATE_X = 0,
24  TRANSLATE_Y,
25  TRANSLATE_Z,
26  ROTATE_X, PITCH = ROTATE_X,
27  ROTATE_Y, YAW = ROTATE_Y,
28  ROTATE_Z, ROLL = ROTATE_Z,
29 
30  DELTA_PITCH,
31  DELTA_YAW,
32  DELTA_ROLL,
33 
34  STEP_YAW,
35  // FIXME does this have a use case?
36  STEP_PITCH,
37  // FIXME does this have a use case?
38  STEP_ROLL,
39 
40  STEP_TRANSLATE_X,
41  STEP_TRANSLATE_Y,
42  STEP_TRANSLATE_Z,
43 
44  TRANSLATE_CAMERA_Z,
45  NUM_COMBINED_AXES,
46 
47  LEFT_HAND = NUM_COMBINED_AXES,
48  RIGHT_HAND,
49  LEFT_FOOT,
50  RIGHT_FOOT,
51  HIPS,
52  SPINE2,
53  HEAD,
54 
55  LEFT_HAND_CLICK,
56  RIGHT_HAND_CLICK,
57 
58  ACTION1,
59  ACTION2,
60 
61  CONTEXT_MENU,
62  TOGGLE_MUTE,
63  TOGGLE_PUSHTOTALK,
64  CYCLE_CAMERA,
65  TOGGLE_OVERLAY,
66 
67  SHIFT,
68 
69  UI_NAV_LATERAL,
70  UI_NAV_VERTICAL,
71  UI_NAV_GROUP,
72  UI_NAV_SELECT,
73  UI_NAV_BACK,
74 
75  // Pointer/Reticle control
76  RETICLE_CLICK,
77  RETICLE_X,
78  RETICLE_Y,
79 
80  // Bisected aliases for RETICLE_X/RETICLE_Y
81  RETICLE_LEFT,
82  RETICLE_RIGHT,
83  RETICLE_UP,
84  RETICLE_DOWN,
85 
86  // Bisected aliases for TRANSLATE_Z
87  LONGITUDINAL_BACKWARD,
88  LONGITUDINAL_FORWARD,
89 
90  // Bisected aliases for TRANSLATE_X
91  LATERAL_LEFT,
92  LATERAL_RIGHT,
93 
94  // Bisected aliases for TRANSLATE_Y
95  VERTICAL_DOWN,
96  VERTICAL_UP,
97 
98  // Bisected aliases for ROTATE_Y
99  YAW_LEFT,
100  YAW_RIGHT,
101 
102  // Bisected aliases for ROTATE_X
103  PITCH_DOWN,
104  PITCH_UP,
105 
106  // Bisected aliases for TRANSLATE_CAMERA_Z
107  BOOM_IN,
108  BOOM_OUT,
109 
110  LEFT_ARM,
111  RIGHT_ARM,
112 
113  LEFT_HAND_THUMB1,
114  LEFT_HAND_THUMB2,
115  LEFT_HAND_THUMB3,
116  LEFT_HAND_THUMB4,
117  LEFT_HAND_INDEX1,
118  LEFT_HAND_INDEX2,
119  LEFT_HAND_INDEX3,
120  LEFT_HAND_INDEX4,
121  LEFT_HAND_MIDDLE1,
122  LEFT_HAND_MIDDLE2,
123  LEFT_HAND_MIDDLE3,
124  LEFT_HAND_MIDDLE4,
125  LEFT_HAND_RING1,
126  LEFT_HAND_RING2,
127  LEFT_HAND_RING3,
128  LEFT_HAND_RING4,
129  LEFT_HAND_PINKY1,
130  LEFT_HAND_PINKY2,
131  LEFT_HAND_PINKY3,
132  LEFT_HAND_PINKY4,
133 
134  RIGHT_HAND_THUMB1,
135  RIGHT_HAND_THUMB2,
136  RIGHT_HAND_THUMB3,
137  RIGHT_HAND_THUMB4,
138  RIGHT_HAND_INDEX1,
139  RIGHT_HAND_INDEX2,
140  RIGHT_HAND_INDEX3,
141  RIGHT_HAND_INDEX4,
142  RIGHT_HAND_MIDDLE1,
143  RIGHT_HAND_MIDDLE2,
144  RIGHT_HAND_MIDDLE3,
145  RIGHT_HAND_MIDDLE4,
146  RIGHT_HAND_RING1,
147  RIGHT_HAND_RING2,
148  RIGHT_HAND_RING3,
149  RIGHT_HAND_RING4,
150  RIGHT_HAND_PINKY1,
151  RIGHT_HAND_PINKY2,
152  RIGHT_HAND_PINKY3,
153  RIGHT_HAND_PINKY4,
154 
155  LEFT_SHOULDER,
156  RIGHT_SHOULDER,
157  LEFT_FORE_ARM,
158  RIGHT_FORE_ARM,
159  LEFT_LEG,
160  RIGHT_LEG,
161  LEFT_UP_LEG,
162  RIGHT_UP_LEG,
163  LEFT_TOE_BASE,
164  RIGHT_TOE_BASE,
165 
166  TRACKED_OBJECT_00,
167  TRACKED_OBJECT_01,
168  TRACKED_OBJECT_02,
169  TRACKED_OBJECT_03,
170  TRACKED_OBJECT_04,
171  TRACKED_OBJECT_05,
172  TRACKED_OBJECT_06,
173  TRACKED_OBJECT_07,
174  TRACKED_OBJECT_08,
175  TRACKED_OBJECT_09,
176  TRACKED_OBJECT_10,
177  TRACKED_OBJECT_11,
178  TRACKED_OBJECT_12,
179  TRACKED_OBJECT_13,
180  TRACKED_OBJECT_14,
181  TRACKED_OBJECT_15,
182  SPRINT,
183 
184  LEFT_EYE,
185  RIGHT_EYE,
186 
187  // blendshapes
188  EYEBLINK_L,
189  EYEBLINK_R,
190  EYESQUINT_L,
191  EYESQUINT_R,
192  EYEDOWN_L,
193  EYEDOWN_R,
194  EYEIN_L,
195  EYEIN_R,
196  EYEOPEN_L,
197  EYEOPEN_R,
198  EYEOUT_L,
199  EYEOUT_R,
200  EYEUP_L,
201  EYEUP_R,
202  BROWSD_L,
203  BROWSD_R,
204  BROWSU_C,
205  BROWSU_L,
206  BROWSU_R,
207  JAWFWD,
208  JAWLEFT,
209  JAWOPEN,
210  JAWRIGHT,
211  MOUTHLEFT,
212  MOUTHRIGHT,
213  MOUTHFROWN_L,
214  MOUTHFROWN_R,
215  MOUTHSMILE_L,
216  MOUTHSMILE_R,
217  MOUTHDIMPLE_L,
218  MOUTHDIMPLE_R,
219  LIPSSTRETCH_L,
220  LIPSSTRETCH_R,
221  LIPSUPPERCLOSE,
222  LIPSLOWERCLOSE,
223  LIPSFUNNEL,
224  LIPSPUCKER,
225  PUFF,
226  CHEEKSQUINT_L,
227  CHEEKSQUINT_R,
228  MOUTHCLOSE,
229  MOUTHUPPERUP_L,
230  MOUTHUPPERUP_R,
231  MOUTHLOWERDOWN_L,
232  MOUTHLOWERDOWN_R,
233  MOUTHPRESS_L,
234  MOUTHPRESS_R,
235  MOUTHSHRUGLOWER,
236  MOUTHSHRUGUPPER,
237  NOSESNEER_L,
238  NOSESNEER_R,
239  TONGUEOUT,
240  USERBLENDSHAPE0,
241  USERBLENDSHAPE1,
242  USERBLENDSHAPE2,
243  USERBLENDSHAPE3,
244  USERBLENDSHAPE4,
245  USERBLENDSHAPE5,
246  USERBLENDSHAPE6,
247  USERBLENDSHAPE7,
248  USERBLENDSHAPE8,
249  USERBLENDSHAPE9,
250 
251  NUM_ACTIONS
252 };
253 
254 template <typename T>
255 int toInt(T enumValue) { return static_cast<int>(enumValue); }
256 
257 class ActionsDevice : public QObject, public InputDevice {
258  Q_OBJECT
259  Q_PROPERTY(QString name READ getName)
260 
261 public:
262  ActionsDevice();
263 
264  EndpointPointer createEndpoint(const Input& input) const override;
265  Input::NamedVector getAvailableInputs() const override;
266 
267 };
268 
269 }
270 
271 #endif // hifi_StandardController_h