really bad controls

This commit is contained in:
2023-06-04 13:02:41 +02:00
parent 051c9d8744
commit 41f8c152eb
3 changed files with 9 additions and 19 deletions

View File

@@ -55,7 +55,7 @@ public:
void SetCamPos(float camX, float camY); void SetCamPos(float camX, float camY);
void MoveCam(float relativeX, float relativeY, float aspectRatio); void MoveCam(float relativeX, float relativeY);
void ChangeZoom(float zoom); void ChangeZoom(float zoom);
// WorldListener // WorldListener

View File

@@ -86,15 +86,12 @@ void Renderer::Resize(int width, int height) {
} }
void Renderer::SetZoom(float zoom) { void Renderer::SetZoom(float zoom) {
m_WorldShader->Start(); m_Camera.CamPos.y = std::max(1.0f, m_Camera.CamPos.y + zoom);
//m_WorldShader->SetZoom(zoom);
m_EntityShader->Start();
//m_EntityShader->SetZoom(zoom);
} }
void Renderer::SetCamMovement(const Vec2f& mov) { void Renderer::SetCamMovement(const Vec2f& mov) {
m_Camera.CamPos.x += mov.x; m_Camera.CamPos.x -= mov.x / m_Camera.CamPos.y * 5000.0f;
m_Camera.CamPos.y += -mov.y; m_Camera.CamPos.z -= mov.y / m_Camera.CamPos.y * 5000.0f;
SetCamPos(m_Camera.CamPos); SetCamPos(m_Camera.CamPos);
} }

View File

@@ -53,7 +53,7 @@ void WorldRenderer::Update() {
ImVec2 mouseDelta = ImGui::GetIO().MouseDelta; ImVec2 mouseDelta = ImGui::GetIO().MouseDelta;
const float relativeX = mouseDelta.x / (float)Display::GetWindowWidth() * 2; const float relativeX = mouseDelta.x / (float)Display::GetWindowWidth() * 2;
const float relativeY = mouseDelta.y / (float)Display::GetWindowHeight() * 2; const float relativeY = mouseDelta.y / (float)Display::GetWindowHeight() * 2;
MoveCam(relativeX, relativeY, Display::GetAspectRatio()); MoveCam(relativeX, relativeY);
} }
if (io.MouseWheel != 0) { if (io.MouseWheel != 0) {
ChangeZoom(io.MouseWheel); ChangeZoom(io.MouseWheel);
@@ -135,24 +135,17 @@ void WorldRenderer::RenderTooltips() const {
RenderCastleTooltip(); RenderCastleTooltip();
} }
void WorldRenderer::MoveCam(float relativeX, float relativeY, float aspectRatio) { void WorldRenderer::MoveCam(float relativeX, float relativeY) {
if (m_WorldVao == nullptr) if (m_WorldVao == nullptr)
return; return;
float movementX = -relativeX / m_Zoom * aspectRatio; m_Renderer->SetCamMovement({ relativeX, relativeY });
float movementY = relativeY / m_Zoom;
m_Renderer->SetCamMovement({ movementX, movementY });
} }
void WorldRenderer::ChangeZoom(float zoomStep) { void WorldRenderer::ChangeZoom(float zoomStep) {
if (m_WorldVao == nullptr) if (m_WorldVao == nullptr)
return; return;
static float sensibility = 1.5f;
if (zoomStep < 0) { m_Renderer->SetZoom(zoomStep);
m_Zoom /= -zoomStep * sensibility;
} else {
m_Zoom *= zoomStep * sensibility;
}
m_Renderer->SetZoom(m_Zoom);
m_Renderer->SetCamMovement({}); m_Renderer->SetCamMovement({});
} }