#include "Camera.h" #include "Window.h" #include <algorithm> void Camera::UpdateCamera(float dt) { pitch -= (Window::GetMouse()->GetRelativePosition().y); yaw -= (Window::GetMouse()->GetRelativePosition().x) ; pitch = std::min(pitch, 90.f); pitch = std::max(pitch, -90.f); if (yaw < 0) { yaw += 360.0f; } if (yaw > 360.0f) { yaw -= 360.0f; } Matrix4 rotation = Matrix4::Rotation(yaw, Vector3(0, 1, 0)); Vector3 forward = rotation * Vector3(0, 0, -1); Vector3 right = rotation * Vector3(1, 0, 0); //if (Window::GetKeyboard()->KeyDown(KEYBOARD_W) && (Window::GetKeyboard()->KeyDown(KEYBOARD_E))) { // position += forward * (speed * 10000); //} if (Window::GetKeyboard() -> KeyDown(KEYBOARD_W)) { position += forward * speed; } if (Window::GetKeyboard() -> KeyDown(KEYBOARD_S)) { position -= forward * speed; } if (Window::GetKeyboard() -> KeyDown(KEYBOARD_A)) { position -= right * speed; } if (Window::GetKeyboard() -> KeyDown(KEYBOARD_D)) { position += right * speed; } if (Window::GetKeyboard() -> KeyDown(KEYBOARD_SHIFT)) { position.y += speed; } if (Window::GetKeyboard()->KeyDown(KEYBOARD_SPACE)) { position.y -= speed; } if (Window::GetKeyboard()->KeyDown(KEYBOARD_SPACE)) { position.y -= speed; } if (Window::GetKeyboard()->KeyDown(KEYBOARD_PLUS)) { speed += 10; } if (Window::GetKeyboard()->KeyDown(KEYBOARD_MINUS)) { speed -= 10; } } Matrix4 Camera::BuildViewMatrix() { return Matrix4::Rotation(-pitch, Vector3(1, 0, 0)) * Matrix4::Rotation(-yaw, Vector3(0, 1, 0)) * Matrix4::Translation(-position); }