From df4d3026f27c9c55e75aff1232af22962936e5ea Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Thu, 9 Jun 2022 19:25:27 +0200 Subject: my bad lol --- src/main.cpp | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/main.cpp (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..f9d8095 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,108 @@ +#include +#include "raylib.h" +#include "raymath.h" + +#include "rfps_defines.h" +#include "rfps_utils.h" + +static Vector2 lastMousePos; +static Vector3 movement = {0, -0.2f, 0}; +static Vector3 rotation; + +int main(void) { + // create window + InitWindow(G_SCREENWIDTH, G_SCREENHEIGHT, G_TITLE); + + // create image + Image checked = GenImageChecked(2, 2, 1, 1, BLACK, RAYWHITE); + Texture2D texture = LoadTextureFromImage(checked); + UnloadImage(checked); + + // create model with image as texture + Model model = {0}; + model = LoadModelFromMesh(GenMeshCube(1.0f, 1.0f, 1.0f)); + model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; + + // setup camera + Camera camera = { + {5.0f, 5.0f, 5.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, 45.0f, 0}; + SetCameraMode(camera, CAMERA_FIRST_PERSON); // Set camera mode + camera.position = (Vector3){50.0f, 1.0f, 50.0f}; + camera.target = (Vector3){50.0f, 1.0f, 50.0f}; + camera.up = (Vector3){0.0f, 1.0f, 0.0f}; + camera.fovy = 60.0f; + camera.projection = CAMERA_PERSPECTIVE; + + rotation = (Vector3){0.0f, 0.0f, 0.0f}; + lastMousePos = GetMousePosition(); + SetTargetFPS(60); + // game loop + while (!WindowShouldClose()) { + // mouse look + Vector2 mouseMovement = + Vector2Subtract(GetMousePosition(), lastMousePos); + lastMousePos = GetMousePosition(); + rotation.x += (mouseMovement.x * -G_CAMERA_MOUSE_MOVE_SENSITIVITY); + rotation.y += (mouseMovement.y * -G_CAMERA_MOUSE_MOVE_SENSITIVITY); + + // direction array + bool direction[4] = {IsKeyDown(KEY_W), IsKeyDown(KEY_S), + IsKeyDown(KEY_D), IsKeyDown(KEY_A)}; + + // compute movement + movement = (Vector3){0, 0, 0}; + movement.x = + (sinf(rotation.x) * direction[1] - sinf(rotation.x) * direction[0] - + cosf(rotation.x) * direction[3] + + cosf(rotation.x) * direction[2]) / + G_PLAYER_MOVEMENT_SENSITIVITY; + movement.z = + (cosf(rotation.x) * direction[1] - cosf(rotation.x) * direction[0] + + sinf(rotation.x) * direction[3] - + sinf(rotation.x) * direction[2]) / + G_PLAYER_MOVEMENT_SENSITIVITY; + // elevation + if (IsKeyDown(KEY_SPACE)) + movement.y -= 0.12f; + if (IsKeyDown(KEY_LEFT_CONTROL)) + movement.y += 0.12f; + + // apply movement + camera.position.x += movement.x / G_PLAYER_MOVEMENT_SENSITIVITY; + camera.position.y += movement.y; + camera.position.z += movement.z / G_PLAYER_MOVEMENT_SENSITIVITY; + + Matrix translation = MatrixTranslate(0, 0, (10)); + Matrix rotation2 = MatrixRotateXYZ( + (Vector3){PI * 2 - rotation.y, PI * 2 - rotation.x, 0}); + Matrix transform = MatrixMultiply(translation, rotation2); + + // apply camera rotation + camera.target.x = camera.position.x - transform.m12; + camera.target.y = camera.position.y - transform.m13; + camera.target.z = camera.position.z - transform.m14; + BeginDrawing(); + ClearBackground(RAYWHITE); + BeginMode3D(camera); + + // draw checkerboard model + for (int x = 0; x < 50; x++) { + for (int z = 0; z < 50; z++) { + Vector3 position; + position.x = x; + position.y = 0; + position.z = z; + DrawModel(model, position, 1.0f, WHITE); + } + } + + EndMode3D(); + DrawFPS(0, 0); + DrawText("Controls - Mouse / WASD / R/F.", 400, 0, 20, DARKGRAY); + EndDrawing(); + } + UnloadTexture(texture); + UnloadModel(model); + CloseWindow(); + return 0; +} -- cgit v1.2.3