diff options
| author | Aaditya Dhruv <[email protected]> | 2026-01-28 14:20:23 -0600 |
|---|---|---|
| committer | Aaditya Dhruv <[email protected]> | 2026-01-28 14:20:23 -0600 |
| commit | 17d2d2589694030f79f2a37732d72d4e433fd745 (patch) | |
| tree | 918cc9f51276c7401c273fe05ad12d10edfaa40f /src/input.c | |
| parent | 77dddef4153688218bec0b50f547622daa18903d (diff) | |
Add camera handling and movement
Camera related movements have been moved to camera.c - it tracks the
matrices as well so we don't have to call it in block_update
The player class is empty right now, but the camera will be a child of
the player, and the player a child of the engine
Diffstat (limited to 'src/input.c')
| -rw-r--r-- | src/input.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/input.c b/src/input.c index 68722e7..54ae199 100644 --- a/src/input.c +++ b/src/input.c @@ -1,5 +1,8 @@ #include "input.h" +#include "camera.h" +#include "cglm/types.h" #include "pthread.h" +#include <SDL2/SDL_events.h> pthread_t input_init(struct engine* engine) { pthread_t thread; @@ -18,5 +21,29 @@ void input_handle(struct engine *engine) { if (event.type == SDL_QUIT) { engine->game_loop = 0; } + if (event.type == SDL_KEYDOWN) { + SDL_KeyboardEvent key = event.key; + vec3 ahead = { 0.0f, 0.0f, -1.0f }; + vec3 behind = { 0.0f, 0.0f, 1.0f }; + vec3 left = { -1.0f, 0.0f, 0.0f }; + vec3 right = { 1.0f, 0.0f, 0.0f }; + switch (key.keysym.sym) { + case SDLK_w: + camera_move(engine->camera, ahead); + break; + case SDLK_a: + camera_move(engine->camera, left); + break; + case SDLK_s: + camera_move(engine->camera, behind); + break; + case SDLK_d: + camera_move(engine->camera, right); + break; + case SDLK_ESCAPE: + engine->game_loop = 0; + break; + } + } } } |
