-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathXinputManager.cpp
More file actions
48 lines (39 loc) · 1023 Bytes
/
Copy pathXinputManager.cpp
File metadata and controls
48 lines (39 loc) · 1023 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "XinputManager.h"
XinputDevice XinputManager::controllers[4];
void XinputManager::update()
{
for(int index = 0; index < 4; index++)
{
controllers[index].index = index;
if(controllerConnected(index))
controllers[index].update();
}
}
bool XinputManager::controllerConnected(int index)
{
XINPUT_STATE connected;
return XInputGetState(index, &connected) == ERROR_SUCCESS;
}
CONTROLLER_TYPE XinputManager::getControllerType(int index)
{
XINPUT_CAPABILITIES info;
XInputGetCapabilities(index, NULL, &info);
switch (info.SubType)
{
case XINPUT_DEVSUBTYPE_GAMEPAD:
return XINPUT_CONTROLLER;
case XINPUT_DEVSUBTYPE_GUITAR:
return XINPUT_GUITAR;
case XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE:
return XINPUT_GUITAR;
case XINPUT_DEVSUBTYPE_GUITAR_BASS:
return XINPUT_GUITAR;
case XINPUT_DEVSUBTYPE_DRUM_KIT:
return XINPUT_DRUM;
}
return XINPUT_UNKNOWN;
}
XinputDevice* XinputManager::getController(int index)
{
return &controllers[index];
}