2023-01-20 09:30:34 +01:00
|
|
|
#include "gamepad.h"
|
|
|
|
#include "GLFW/glfw3.h"
|
2023-01-20 10:01:15 +01:00
|
|
|
#include "error.h"
|
2023-01-20 09:30:34 +01:00
|
|
|
#include "string.h"
|
|
|
|
|
|
|
|
struct sw_gamepad sw_gamepads[SW_MAX_GAMEPADS];
|
|
|
|
|
|
|
|
void sw_gamepad_static_init() {
|
|
|
|
memset(sw_gamepads, 0, sizeof(sw_gamepads));
|
|
|
|
}
|
|
|
|
|
|
|
|
void sw_gamepad_tick() {
|
|
|
|
i32 i, j;
|
|
|
|
GLFWgamepadstate state;
|
|
|
|
|
|
|
|
for(i = 0; i < SW_MAX_GAMEPADS; ++i) {
|
|
|
|
if(glfwGetGamepadState(i, &state)) {
|
|
|
|
for(j = 0; j < SW_MAX_GAMEPAD_AXES; ++j) {
|
|
|
|
sw_gamepads[i].axes[j] = state.axes[j];
|
|
|
|
}
|
|
|
|
for(j = 0; j < SW_MAX_GAMEPAD_BUTTONS; ++j) {
|
|
|
|
bool down = state.buttons[j];
|
2023-01-20 10:01:15 +01:00
|
|
|
sw_gamepads[i].button_pressed[j] =
|
|
|
|
!sw_gamepads[i].button_pressed[j] && down;
|
|
|
|
sw_gamepads[i].button_down[j] = down;
|
2023-01-20 09:30:34 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|