diff options
| author | DrNuget <drnuget@outlook.com> | 2026-01-10 09:54:55 +0200 |
|---|---|---|
| committer | DrNuget <drnuget@outlook.com> | 2026-01-10 09:54:55 +0200 |
| commit | 73bcc7283fdb3127b837b048ba426e1f83543cef (patch) | |
| tree | 757332a08ec472825dea95aba9a1781f2f257aa8 /src/engine | |
| parent | 3a3b64bedc47a0795358c6be7062160f52f2fc3b (diff) | |
| download | mnm-73bcc7283fdb3127b837b048ba426e1f83543cef.tar.gz | |
change fps camera values to degrees, limit fps camera pitch between -90,90 degrees, add variable for render distancedev
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/M_camera.c | 8 | ||||
| -rw-r--r-- | src/engine/M_chunk.c | 2 | ||||
| -rw-r--r-- | src/engine/M_game.c | 14 | ||||
| -rw-r--r-- | src/engine/M_game.h | 1 | ||||
| -rw-r--r-- | src/engine/M_main.c | 9 | ||||
| -rw-r--r-- | src/engine/M_render.c | 2 | ||||
| -rw-r--r-- | src/engine/M_render.h | 2 |
7 files changed, 28 insertions, 10 deletions
diff --git a/src/engine/M_camera.c b/src/engine/M_camera.c index f28d22f..a2852ba 100644 --- a/src/engine/M_camera.c +++ b/src/engine/M_camera.c @@ -42,9 +42,13 @@ inline void M_cameraViewMatrix(M_Camera *camera) break; case M_CAMERA_FPS: glm_mat4_identity(camera->view_matrix); + float pitch, yaw, roll; + pitch = glm_rad(camera->pitch); + yaw = glm_rad(camera->yaw); + roll = glm_rad(camera->roll); glm_translate(camera->view_matrix, camera->pos); - glm_rotate_x(camera->view_matrix, camera->pitch, camera->view_matrix); - glm_rotate_y(camera->view_matrix, camera->yaw, camera->view_matrix); + glm_rotate_x(camera->view_matrix, pitch, camera->view_matrix); + glm_rotate_y(camera->view_matrix, yaw, camera->view_matrix); break; } } diff --git a/src/engine/M_chunk.c b/src/engine/M_chunk.c index 2227ee9..630e206 100644 --- a/src/engine/M_chunk.c +++ b/src/engine/M_chunk.c @@ -5,7 +5,7 @@ void M_generateChunk(M_Chunk *chunk) for (int x=0;x<M_CHUNK_SIZE;x++) for (int y=0;y<M_CHUNK_SIZE;y++) for (int z=0;z<M_CHUNK_SIZE;z++) { - if (x==M_CHUNK_SIZE) { + if (y==M_CHUNK_SIZE/2) { M_Block block; M_createBlock(&block, 1); chunk->blocks[x][y][z] = block; diff --git a/src/engine/M_game.c b/src/engine/M_game.c index 6295f51..0b2b14a 100644 --- a/src/engine/M_game.c +++ b/src/engine/M_game.c @@ -4,6 +4,7 @@ int M_initGame(M_Game *game, const char *window_title) { game->window_width = 1280; game->window_height = 720; + game->mouse_sens = 10.0f; SDL_Init( SDL_INIT_VIDEO @@ -17,6 +18,8 @@ int M_initGame(M_Game *game, const char *window_title) ); SDL_SetWindowRelativeMouseMode(game->window, 1); + game->render_info.render_distance = 40.0f; + M_setupProjection(90.0f, ((float)game->window_width)/((float)game->window_height), &game->render_info); game->block_atlas = M_createBlockAtlas(); @@ -42,6 +45,8 @@ int M_initGame(M_Game *game, const char *window_title) glClearColor(0.0f, 0.25f, 0.5f, 1.0f); glEnable(GL_DEPTH_TEST); +// glEnable(GL_CULL_FACE); +// glCullFace(GL_FRONT); return 0; } @@ -62,11 +67,14 @@ int M_handleEvents(M_Game *game) game->running = 0; break; case SDL_EVENT_KEY_DOWN: - SDL_SetWindowRelativeMouseMode(game->window, 0); + game->running = 0; break; case SDL_EVENT_MOUSE_MOTION: - game->player.camera.yaw += (float)event.motion.xrel/100; - game->player.camera.pitch += (float)event.motion.yrel/100; + M_Camera *camera = &game->player.camera; + camera->yaw += (float)event.motion.xrel * (game->mouse_sens/10); + camera->pitch += (float)event.motion.yrel * (game->mouse_sens/10); + if (camera->pitch > 90.0f) camera->pitch = 90.0f; + if (camera->pitch < -90.0f) camera->pitch = -90.0f; break; } } diff --git a/src/engine/M_game.h b/src/engine/M_game.h index 4c884d9..41888c8 100644 --- a/src/engine/M_game.h +++ b/src/engine/M_game.h @@ -19,6 +19,7 @@ typedef struct { SDL_GLContext gpu; int window_width, window_height; + float mouse_sens; int running; M_RenderInfo render_info; diff --git a/src/engine/M_main.c b/src/engine/M_main.c index 98cc605..2a74c41 100644 --- a/src/engine/M_main.c +++ b/src/engine/M_main.c @@ -40,12 +40,15 @@ int main() M_moveObject(&my_cube, (vec3){0.0f, -0.5f, -1.0f}); while (game.running) { - printf("hello\n"); + printf("Pitch: %f, Yaw: %f\n", + game.player.camera.pitch, + game.player.camera.yaw + ); M_handleEvents(&game); glClear(GL_COLOR_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT); -// M_renderChunk(&game, &my_chunk); - M_drawObject(&game.render_info, &game.player.camera, &my_cube); + M_renderChunk(&game, &my_chunk); +// M_drawObject(&game.render_info, &game.player.camera, &my_cube); SDL_GL_SwapWindow(game.window); } diff --git a/src/engine/M_render.c b/src/engine/M_render.c index 9317167..1c4afa5 100644 --- a/src/engine/M_render.c +++ b/src/engine/M_render.c @@ -2,7 +2,7 @@ void M_setupProjection(float fov, float aspect_ratio, M_RenderInfo *render_info) { - glm_perspective(fov, aspect_ratio, 0.01f, 10.0f, render_info->projection_matrix); + glm_perspective(fov, aspect_ratio, 0.01f, render_info->render_distance, render_info->projection_matrix); } void M_drawObject(M_RenderInfo *render_info, M_Camera *camera, M_Object *obj) diff --git a/src/engine/M_render.h b/src/engine/M_render.h index c6800ae..1212e39 100644 --- a/src/engine/M_render.h +++ b/src/engine/M_render.h @@ -9,6 +9,8 @@ typedef struct { mat4 view_matrix, projection_matrix; + float render_distance; + M_ViewModel *global_models; } M_RenderInfo; |
