From a4fb56b5498eabf9ae2507d5ef5eac90c63fdf7c Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Mon, 5 Jun 2023 13:50:45 +0200 Subject: [PATCH] camera yaw and pitch --- include/render/Renderer.h | 3 +++ src/render/Renderer.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/render/Renderer.h b/include/render/Renderer.h index 9b58557..e37169c 100644 --- a/include/render/Renderer.h +++ b/include/render/Renderer.h @@ -16,6 +16,9 @@ struct Camera { Mat4f InvProjectionMatrix; Vec3f CamPos; + + float m_Yaw = -3.141592653f / 2.0f; + constexpr static float m_Pitch = -3.141592653f / 2.0f + 0.0000001f; }; class Renderer { diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 7298a25..428b382 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -97,8 +97,15 @@ void Renderer::SetCamMovement(const Vec2f& mov) { } void Renderer::SetCamPos(const Vec3f& newPos) { + + Vec3f front = { + std::cos(m_Camera.m_Yaw) * std::cos(m_Camera.m_Pitch), + std::sin(m_Camera.m_Pitch), + std::sin(m_Camera.m_Yaw) * std::cos(m_Camera.m_Pitch) + }; + m_Camera.CamPos = newPos; - m_Camera.viewMatrix = maths::Look(m_Camera.CamPos, {0, -1, -0.000000001}, {0, 1, 0}); + m_Camera.viewMatrix = maths::Look(m_Camera.CamPos, front, {0, 1, 0}); m_Camera.InvViewMatrix = maths::Inverse(m_Camera.viewMatrix); m_WorldShader->Start(); m_WorldShader->SetViewMatrix(m_Camera.viewMatrix);