changes to camera

This commit is contained in:
2026-01-26 21:35:46 +02:00
parent 16638d9f08
commit 5744c8b509
3 changed files with 30 additions and 12 deletions

View File

@@ -18,13 +18,13 @@ Camera::Camera(
glm::vec3 world_up, glm::vec3 world_up,
float pitch_deg, float pitch_deg,
float yaw_deg) float yaw_deg)
: move_speed { move_speed } : pos { position }
, move_speed { move_speed }
, mouse_sensitivity { mouse_sensitivity } , mouse_sensitivity { mouse_sensitivity }
, pitch_min { pitch_min } , pitch_min { pitch_min }
, pitch_max { pitch_max } , pitch_max { pitch_max }
, fov_min { fov_min } , fov_min { fov_min }
, fov_max { fov_max } , fov_max { fov_max }
, pos { position }
, front {} , front {}
, up { up } , up { up }
, right {} , right {}

View File

@@ -13,6 +13,7 @@ public:
DOWN DOWN
}; };
glm::vec3 pos;
float move_speed; float move_speed;
float mouse_sensitivity; float mouse_sensitivity;
float pitch_min; float pitch_min;
@@ -50,7 +51,6 @@ public:
void process_mouse_scroll(float offset_y); void process_mouse_scroll(float offset_y);
private: private:
glm::vec3 pos;
glm::vec3 front; glm::vec3 front;
glm::vec3 up; glm::vec3 up;
glm::vec3 right; glm::vec3 right;

View File

@@ -34,12 +34,26 @@ Settings settings {};
double delta {}; double delta {};
static const struct {
glm::vec3 pos;
float fov_deg;
float fov_max;
float move_speed;
float mouse_sensitivity;
} camera_defaults = {
.pos = glm::vec3 { 0.0f, 0.0f, 3.0f },
.fov_deg = 70.0f,
.fov_max = 70.0f,
.move_speed = 1.0f,
.mouse_sensitivity = 0.1f
};
Camera camera { Camera camera {
glm::vec3 { 0.0f, 0.0f, 3.0f }, camera_defaults.pos,
70.0f, camera_defaults.fov_deg,
70.0f, camera_defaults.fov_max,
1.0f, camera_defaults.move_speed,
0.1f camera_defaults.mouse_sensitivity
}; };
// TODO: fps limiter is off by ~4 for some reason at 120-144 fps range. // TODO: fps limiter is off by ~4 for some reason at 120-144 fps range.
@@ -109,6 +123,10 @@ void process_keyboard_input(GLFWwindow* window) {
} else if (glfwGetKey(window, GLFW_KEY_E) == GLFW_PRESS) { } else if (glfwGetKey(window, GLFW_KEY_E) == GLFW_PRESS) {
camera.move_to_direction(Camera::Direction::DOWN, delta); camera.move_to_direction(Camera::Direction::DOWN, delta);
} }
if (glfwGetKey(window, GLFW_KEY_R) == GLFW_PRESS) {
camera.pos = camera_defaults.pos;
}
} }
int main() { int main() {
@@ -203,14 +221,14 @@ int main() {
plane.draw(); plane.draw();
shader->set_vec4("color", { 0.0f, 0.0f, 1.0f, 1.0f }); shader->set_vec4("color", { 0.0f, 0.0f, 1.0f, 1.0f });
square.rotation.z += 45.0f * delta;
square.pos.x = std::cos(current_time); square.pos.x = std::cos(current_time);
square.pos.y = std::sin(current_time); square.pos.y = std::sin(current_time);
square.rotation.z = glm::degrees(current_time) + 45.0f;
square.draw(); square.draw();
shader->set_vec4("color", { 1.0f, 1.0f, 1.0f, 1.0f }); // shader->set_vec4("color", { 1.0f, 1.0f, 1.0f, 1.0f });
cube.rotation.y += 45.0f * delta; // cube.rotation.y += 45.0f * delta;
cube.draw(); // cube.draw();
const double time_since_last_frame { glfwGetTime() - last_frame_time }; const double time_since_last_frame { glfwGetTime() - last_frame_time };
if (time_since_last_frame < fps_lock) { if (time_since_last_frame < fps_lock) {