|
|
|
@ -37,6 +37,7 @@ |
|
|
|
|
typedef struct Joystick |
|
|
|
|
{ |
|
|
|
|
GLboolean present; |
|
|
|
|
char* name; |
|
|
|
|
float* axes; |
|
|
|
|
unsigned char* buttons; |
|
|
|
|
int axis_count; |
|
|
|
@ -94,11 +95,11 @@ static void draw_joystick(Joystick* j, int x, int y, int width, int height) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void draw_joysticks(void) |
|
|
|
|
static void draw_joysticks(GLFWwindow window) |
|
|
|
|
{ |
|
|
|
|
int i, width, height; |
|
|
|
|
|
|
|
|
|
glfwGetWindowSize(glfwGetCurrentContext(), &width, &height); |
|
|
|
|
glfwGetWindowSize(window, &width, &height); |
|
|
|
|
|
|
|
|
|
glMatrixMode(GL_PROJECTION); |
|
|
|
|
glLoadIdentity(); |
|
|
|
@ -130,6 +131,9 @@ static void refresh_joysticks(void) |
|
|
|
|
{ |
|
|
|
|
int axis_count, button_count; |
|
|
|
|
|
|
|
|
|
free(j->name); |
|
|
|
|
j->name = strdup(glfwGetJoystickName(GLFW_JOYSTICK_1 + i)); |
|
|
|
|
|
|
|
|
|
axis_count = glfwGetJoystickParam(GLFW_JOYSTICK_1 + i, GLFW_AXES); |
|
|
|
|
if (axis_count != j->axis_count) |
|
|
|
|
{ |
|
|
|
@ -150,8 +154,8 @@ static void refresh_joysticks(void) |
|
|
|
|
|
|
|
|
|
if (!j->present) |
|
|
|
|
{ |
|
|
|
|
printf("Found joystick %i with %i axes, %i buttons\n", |
|
|
|
|
i + 1, j->axis_count, j->button_count); |
|
|
|
|
printf("Found joystick %i named \'%s\' with %i axes, %i buttons\n", |
|
|
|
|
i + 1, j->name, j->axis_count, j->button_count); |
|
|
|
|
|
|
|
|
|
joystick_count++; |
|
|
|
|
} |
|
|
|
@ -162,12 +166,13 @@ static void refresh_joysticks(void) |
|
|
|
|
{ |
|
|
|
|
if (j->present) |
|
|
|
|
{ |
|
|
|
|
printf("Lost joystick %i named \'%s\'\n", i + 1, j->name); |
|
|
|
|
|
|
|
|
|
free(j->name); |
|
|
|
|
free(j->axes); |
|
|
|
|
free(j->buttons); |
|
|
|
|
memset(j, 0, sizeof(Joystick)); |
|
|
|
|
|
|
|
|
|
printf("Lost joystick %i\n", i + 1); |
|
|
|
|
|
|
|
|
|
joystick_count--; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -205,7 +210,7 @@ int main(void) |
|
|
|
|
glClear(GL_COLOR_BUFFER_BIT); |
|
|
|
|
|
|
|
|
|
refresh_joysticks(); |
|
|
|
|
draw_joysticks(); |
|
|
|
|
draw_joysticks(window); |
|
|
|
|
|
|
|
|
|
glfwSwapBuffers(window); |
|
|
|
|
glfwPollEvents(); |
|
|
|
|