diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-04-24 00:08:21 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-04-24 00:08:21 -0400 |
commit | 3d3a54a975853bbe8884a85e063cbebee580118c (patch) | |
tree | 924f637246ef9f9c484b74eec4cfeb5d18cae763 /src/renderer.c | |
parent | collision (diff) | |
download | raycaster-3d3a54a975853bbe8884a85e063cbebee580118c.tar.gz raycaster-3d3a54a975853bbe8884a85e063cbebee580118c.tar.bz2 raycaster-3d3a54a975853bbe8884a85e063cbebee580118c.zip |
x11
Diffstat (limited to '')
-rw-r--r-- | src/renderer.c | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/renderer.c b/src/renderer.c index c64be51..a77f855 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -19,16 +19,16 @@ static double fov = PI / 4; #define FOV_CHANGE_SPEED 1 #define PLAYER_SIZE .1 + void update_camera(Camera* camera, Screen* screen) { double rotate = 0; - if (key_pressed(screen, SDL_SCANCODE_LEFT)) + if (key_down(KEY_LEFT)) rotate -= ROTATE_SPEED; - if (key_pressed(screen, SDL_SCANCODE_RIGHT)) + if (key_down(KEY_RIGHT)) rotate += ROTATE_SPEED; - rotate *= screen->delta; rotate += camera->angle; while (rotate >= PI2) rotate -= PI2; @@ -39,31 +39,31 @@ void update_camera(Camera* camera, Screen* screen) { v2 left = { forward.y, -forward.x }; v2 move = { 0, 0 }; - if (key_pressed(screen, SDL_SCANCODE_W)) { + if (key_down(KEY_W)) { move.x += forward.x; move.y += forward.y; } - if (key_pressed(screen, SDL_SCANCODE_S)) { + if (key_down(KEY_S)) { move.x -= forward.x; move.y -= forward.y; } - if (key_pressed(screen, SDL_SCANCODE_A)) { + if (key_down(KEY_A)) { move.x += left.x; move.y += left.y; } - if (key_pressed(screen, SDL_SCANCODE_D)) { + if (key_down(KEY_D)) { move.x -= left.x; move.y -= left.y; } - if (key_pressed(screen, SDL_SCANCODE_EQUALS)) { + if (key_down(KEY_EQUALS)) { fov += FOV_CHANGE_SPEED * screen->delta; } - if (key_pressed(screen, SDL_SCANCODE_MINUS)) { + if (key_down(KEY_MINUS)) { fov -= FOV_CHANGE_SPEED * screen->delta; } @@ -94,6 +94,7 @@ void render(Screen* screen, const Camera* camera) { }; for (int x = 0; x < screen->width; x++) { + const float xcam = (2 * (x / (float) (screen->width))) - 1; const float change = fov * atan(xcam); const float theta = camera->angle + change; @@ -109,20 +110,31 @@ void render(Screen* screen, const Camera* camera) { uint32_t color; switch (hit) { case 1: color = 0xFF0000FF; break; - case 2: color = 0x00FF00FF; break; - case 3: color = 0x0000FFFF; break; - case 4: color = 0xFF00FFFF; break; - case 5: color = 0x00FFFFFF; break; - default: color = 0x000000FF; break; + case 2: color = 0xFF00FF00; break; + case 3: color = 0xFFFF0000; break; + case 4: color = 0xFFFF00FF; break; + case 5: color = 0xFFFFFF00; break; + default: color = 0xFF000000; break; } + // switch (hit) { + // case 1: color = 0xFF0000FF; break; + // case 2: color = 0x00FF00FF; break; + // case 3: color = 0x0000FFFF; break; + // case 4: color = 0xFF00FFFF; break; + // case 5: color = 0x00FFFFFF; break; + // default: color = 0x000000FF; break; + // } const int h = (int) (screen->height / len), y0 = max((screen->height / 2) - (h / 2), 0), y1 = min((screen->height / 2) + (h / 2), screen->height - 1); - verline(screen, x, 0, y0, 0x202020FF); + verline(screen, x, 0, y0, 0xFF202020); verline(screen, x, y0, y1, color); - verline(screen, x, y1, screen->height - 1, 0x505050FF); + verline(screen, x, y1, screen->height - 1, 0xFF505050); + // verline(screen, x, 0, y0, 0x202020FF); + // verline(screen, x, y0, y1, color); + // verline(screen, x, y1, screen->height - 1, 0x505050FF); } } |