From faf544f997c50dfc971c4aa6099fc512516e5195 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Mon, 5 Jun 2023 13:15:27 +0200 Subject: [PATCH] basic camera movement --- include/render/Renderer.h | 2 ++ src/render/Renderer.cpp | 9 +++++---- src/render/WorldRenderer.cpp | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/render/Renderer.h b/include/render/Renderer.h index 9bad578..9b58557 100644 --- a/include/render/Renderer.h +++ b/include/render/Renderer.h @@ -31,6 +31,8 @@ private: std::unique_ptr m_WorldShader; std::unique_ptr m_EntityShader; + Vec2i m_WindowSize; + Vec3f m_BackgroundColor; Camera m_Camera {}; diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index f69de7d..7298a25 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -82,6 +82,7 @@ void Renderer::Resize(int width, int height) { m_WorldShader->SetProjectionMatrix(m_Camera.projectionMatrix); m_EntityShader->Start(); m_WorldShader->SetProjectionMatrix(m_Camera.projectionMatrix); + m_WindowSize = {width, height}; glViewport(0, 0, width, height); } @@ -90,14 +91,14 @@ void Renderer::SetZoom(float zoom) { } void Renderer::SetCamMovement(const Vec2f& mov) { - m_Camera.CamPos.x -= mov.x / m_Camera.CamPos.y * 5000.0f; - m_Camera.CamPos.z -= mov.y / m_Camera.CamPos.y * 5000.0f; - SetCamPos(m_Camera.CamPos); + Vec2f cursor = {static_cast(m_WindowSize.x) / 2.0f - mov.x, static_cast(m_WindowSize.y) / 2.0f - mov.y}; + Vec2f worldMovement = GetCursorWorldPos(cursor, m_WindowSize.x, m_WindowSize.y); + SetCamPos({worldMovement.x, m_Camera.CamPos.y, worldMovement.y}); } void Renderer::SetCamPos(const Vec3f& newPos) { m_Camera.CamPos = newPos; - m_Camera.viewMatrix = maths::Look(m_Camera.CamPos, {0, -1, -0.0001}, {0, 1, 0}); + m_Camera.viewMatrix = maths::Look(m_Camera.CamPos, {0, -1, -0.000000001}, {0, 1, 0}); m_Camera.InvViewMatrix = maths::Inverse(m_Camera.viewMatrix); m_WorldShader->Start(); m_WorldShader->SetViewMatrix(m_Camera.viewMatrix); diff --git a/src/render/WorldRenderer.cpp b/src/render/WorldRenderer.cpp index d843725..edcfc6f 100644 --- a/src/render/WorldRenderer.cpp +++ b/src/render/WorldRenderer.cpp @@ -53,7 +53,7 @@ void WorldRenderer::Update() { ImVec2 mouseDelta = ImGui::GetIO().MouseDelta; const float relativeX = mouseDelta.x / (float)Display::GetWindowWidth() * 2; const float relativeY = mouseDelta.y / (float)Display::GetWindowHeight() * 2; - MoveCam(relativeX, relativeY); + MoveCam(mouseDelta.x, mouseDelta.y); } if (io.MouseWheel != 0) { ChangeZoom(io.MouseWheel);