From 17d2d2589694030f79f2a37732d72d4e433fd745 Mon Sep 17 00:00:00 2001 From: Aaditya Dhruv Date: Wed, 28 Jan 2026 14:20:23 -0600 Subject: 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 --- src/input.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/input.c') 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 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; + } + } } } -- cgit