17#define DEFINE_GAMEPAD_BUTTON_HANDLE(KeyName) \
18 static ButtonHandle _##KeyName; \
19 ButtonHandle GamepadButton::KeyName() { return _##KeyName; }
21DEFINE_GAMEPAD_BUTTON_HANDLE(lstick)
22DEFINE_GAMEPAD_BUTTON_HANDLE(rstick)
23DEFINE_GAMEPAD_BUTTON_HANDLE(lshoulder)
24DEFINE_GAMEPAD_BUTTON_HANDLE(rshoulder)
25DEFINE_GAMEPAD_BUTTON_HANDLE(ltrigger)
26DEFINE_GAMEPAD_BUTTON_HANDLE(rtrigger)
27DEFINE_GAMEPAD_BUTTON_HANDLE(lgrip)
28DEFINE_GAMEPAD_BUTTON_HANDLE(rgrip)
30DEFINE_GAMEPAD_BUTTON_HANDLE(dpad_left)
31DEFINE_GAMEPAD_BUTTON_HANDLE(dpad_right)
32DEFINE_GAMEPAD_BUTTON_HANDLE(dpad_up)
33DEFINE_GAMEPAD_BUTTON_HANDLE(dpad_down)
35DEFINE_GAMEPAD_BUTTON_HANDLE(back)
36DEFINE_GAMEPAD_BUTTON_HANDLE(guide)
37DEFINE_GAMEPAD_BUTTON_HANDLE(start)
39DEFINE_GAMEPAD_BUTTON_HANDLE(next)
40DEFINE_GAMEPAD_BUTTON_HANDLE(previous)
42DEFINE_GAMEPAD_BUTTON_HANDLE(face_a)
43DEFINE_GAMEPAD_BUTTON_HANDLE(face_b)
44DEFINE_GAMEPAD_BUTTON_HANDLE(face_c)
45DEFINE_GAMEPAD_BUTTON_HANDLE(face_x)
46DEFINE_GAMEPAD_BUTTON_HANDLE(face_y)
47DEFINE_GAMEPAD_BUTTON_HANDLE(face_z)
49DEFINE_GAMEPAD_BUTTON_HANDLE(face_1)
50DEFINE_GAMEPAD_BUTTON_HANDLE(face_2)
52DEFINE_GAMEPAD_BUTTON_HANDLE(trigger)
53DEFINE_GAMEPAD_BUTTON_HANDLE(hat_up)
54DEFINE_GAMEPAD_BUTTON_HANDLE(hat_down)
55DEFINE_GAMEPAD_BUTTON_HANDLE(hat_left)
56DEFINE_GAMEPAD_BUTTON_HANDLE(hat_right)
64joystick(
int button_number) {
65 if (button_number >= 0) {
68 while ((
size_t)button_number >= buttons.size()) {
70 sprintf(numstr,
"joystick%d", (
int)buttons.size() + 1);
73 buttons.push_back(handle);
75 return buttons[button_number];
77 return ButtonHandle::none();
This is our own Panda specialization on the default STL vector.