#ifndef VG_INPUT_H
#define VG_INPUT_H
+#include "common.h"
+#include "vg/vg_loader.h"
+
static inline float vg_get_axis( const char *axis );
static inline int vg_get_button( const char *button );
static inline int vg_get_button_down( const char *button );
k_button_state_none = 0
};
-GLFWgamepadstate vg_gamepad;
-int vg_gamepad_ready = 0;
-const char *vg_gamepad_name = NULL;
-int vg_gamepad_id;
-
/* TODO: Fix this... */
enum EInputMode
{
int get_button_cross_device( int const id )
{
if( key_is_keyboard( id ) )
- return glfwGetKey( vg_window, id );
+ return glfwGetKey( vg.window, id );
else
- return glfwGetMouseButton( vg_window, id ) == GLFW_PRESS;
+ return glfwGetMouseButton( vg.window, id ) == GLFW_PRESS;
}
void vg_update_inputs(void)
{
- if( !glfwGetGamepadState( GLFW_JOYSTICK_1, &vg_gamepad) )
- {
- vg_gamepad_ready = 0;
- }
+ if( !glfwGetGamepadState( GLFW_JOYSTICK_1, &vg.gamepad) )
+ vg.gamepad_ready = 0;
/* Update button inputs */
for( int i = 0; i < vg_list_size( vg_button_binds ); i ++ )
{
struct button_binding *binding = vg_controller_binds + i;
binding->prev = binding->value;
- binding->value = vg_gamepad.buttons[ binding->bind ];
+ binding->value = vg.gamepad.buttons[ binding->bind ];
}
/* Update axis inputs */
for( int i = 0; i < vg_list_size( vg_axis_binds ); i ++ )
{
struct axis_binding *binding = vg_axis_binds + i;
- binding->value = vg_gamepad.axes[ binding->bind ];
+ binding->value = vg.gamepad.axes[ binding->bind ];
}
}
-static void vg_gamepad_init(void)
+static int vg_gamepad_init(void)
{
- for( int id = 0; id <= GLFW_JOYSTICK_LAST; id ++ )
+ if( vg_acquire_thread_sync(1) )
{
- if( glfwJoystickPresent( id ) )
+ for( int id=0; id<=GLFW_JOYSTICK_LAST; id ++ )
{
- vg_info( "Joystick found: '%s'\n", glfwGetJoystickName(id) );
+ if( glfwJoystickPresent( id ) )
+ {
+ vg_info( "Joystick found: '%s'\n", glfwGetJoystickName(id) );
+ }
+
+ if( glfwJoystickIsGamepad( id ) )
+ {
+ vg.gamepad_name = glfwGetGamepadName( id );
+ vg_success( "Gamepad mapping registered: %s\n", vg.gamepad_name );
+
+ vg.gamepad_ready = 1;
+ vg.gamepad_id = id;
+ break;
+ }
}
- if( glfwJoystickIsGamepad( id ) )
- {
- vg_gamepad_name = glfwGetGamepadName( id );
- vg_success( "Gamepad with mapping registered: %s\n", vg_gamepad_name );
-
- vg_gamepad_ready = 1;
- vg_gamepad_id = id;
-
- break;
- }
+ vg_release_thread_sync(1);
+ return 1;
}
+
+ return 0;
}
#endif