SDL2: Added gamepad support.

This commit is contained in:
Branimir Karadžić
2014-12-15 20:58:54 -08:00
parent 504af5216b
commit 73a227cefd
10 changed files with 372 additions and 49 deletions

View File

@@ -139,6 +139,31 @@ struct Keyboard
uint8_t m_char[256];
};
struct Gamepad
{
Gamepad()
{
reset();
}
void reset()
{
memset(m_axis, 0, sizeof(m_axis) );
}
void setAxis(entry::GamepadAxis::Enum _axis, int32_t _value)
{
m_axis[_axis] = _value;
}
int32_t getAxis(entry::GamepadAxis::Enum _axis)
{
return m_axis[_axis];
}
int32_t m_axis[entry::GamepadAxis::Count];
};
struct Input
{
Input()
@@ -211,12 +236,17 @@ struct Input
{
m_mouse.reset();
m_keyboard.reset();
for (uint32_t ii = 0; ii < BX_COUNTOF(m_gamepad); ++ii)
{
m_gamepad[ii].reset();
}
}
typedef stl::unordered_map<const char*, const InputBinding*> InputBindingMap;
InputBindingMap m_inputBindingsMap;
Mouse m_mouse;
Keyboard m_keyboard;
Gamepad m_gamepad[ENTRY_CONFIG_MAX_GAMEPADS];
};
static Input s_input;
@@ -301,3 +331,13 @@ void inputSetMouseLock(bool _lock)
}
}
}
void inputSetGamepadAxis(entry::GamepadHandle _handle, entry::GamepadAxis::Enum _axis, int32_t _value)
{
s_input.m_gamepad[_handle.idx].setAxis(_axis, _value);
}
int32_t inputGetGamepadAxis(entry::GamepadHandle _handle, entry::GamepadAxis::Enum _axis)
{
return s_input.m_gamepad[_handle.idx].getAxis(_axis);
}