$darkmode
Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
gamepad_input.h
Go to the documentation of this file.
1 
11 #ifndef GAMEPAD_INPUT_H
12 #define GAMEPAD_INPUT_H
13 
14 #include "gamepad_context.h"
15 
17 #define GAMEPAD_BUTTON_COUNT 15
18 
20 #define GAMEPAD_DEFAULT_DEADZONE 0.15F
21 
23 #define GAMEPAD_DEFAULT_LOOK_SENSITIVITY 120.0F
24 
26 #define GAMEPAD_DEFAULT_MOVE_SENSITIVITY 1.0F
27 
29 #define GAMEPAD_DEFAULT_TRIGGER_THRESHOLD 0.1F
30 
35 typedef struct GamepadActions {
36  int env_next;
37  int env_prev;
40 
42 #define GAMEPAD_AXIS_COUNT 6
43 
44 typedef struct GamepadState {
45  int connected;
47  float deadzone;
54 } GamepadState;
55 
60 void gamepad_input_init(GamepadState* state);
61 
72 void gamepad_input_poll(GamepadState* state, GamepadActions* actions);
73 
83 void gamepad_write_input(const GamepadState* state, GamepadContext* ctx);
84 
95 float gamepad_apply_deadzone(float value, float deadzone);
96 
97 #endif /* GAMEPAD_INPUT_H */
Decoupling seam between gamepad input and camera internals.
#define GAMEPAD_AXIS_COUNT
Definition: gamepad_input.h:42
void gamepad_input_init(GamepadState *state)
Initializes gamepad state with default values.
Definition: gamepad_input.c:13
#define GAMEPAD_BUTTON_COUNT
Definition: gamepad_input.h:17
float gamepad_apply_deadzone(float value, float deadzone)
Applies a dead-zone filter to an axis value.
Definition: gamepad_input.c:29
void gamepad_input_poll(GamepadState *state, GamepadActions *actions)
Polls GLFW gamepad state and detects button events.
Definition: gamepad_input.c:77
void gamepad_write_input(const GamepadState *state, GamepadContext *ctx)
Writes gamepad axes into a GamepadContext.
Definition: gamepad_input.c:137
Edge-detected button events produced by a single poll.
Definition: gamepad_input.h:35
int env_next
Definition: gamepad_input.h:36
int env_prev
Definition: gamepad_input.h:37
int camera_reset
Definition: gamepad_input.h:38
Minimal camera state slice for gamepad input application.
Definition: gamepad_context.h:19
Definition: gamepad_input.h:44
float move_sensitivity
Definition: gamepad_input.h:49
float axes[6]
Definition: gamepad_input.h:53
unsigned char prev_buttons[15]
Definition: gamepad_input.h:51
float look_sensitivity
Definition: gamepad_input.h:48
int joystick_id
Definition: gamepad_input.h:46
float trigger_threshold
Definition: gamepad_input.h:50
int connected
Definition: gamepad_input.h:45
float deadzone
Definition: gamepad_input.h:47