From e10d67e6ebbc00e8c9db78cc7bc874b05505bcaf Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 12 Sep 2021 17:11:33 +0200 Subject: [PATCH] fix: change render coordinates --- src/render/Renderer.cpp | 9 +++++---- src/render/shaders/EntityShader.cpp | 4 ++-- src/render/shaders/WorldShader.cpp | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index e3ea7ed..14dc6b0 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -12,6 +12,7 @@ #include #include #include "misc/Time.h" +#include "misc/Easing.h" using namespace gl; @@ -112,8 +113,8 @@ void setZoom(float zoom){ } void setCamMovement(const glm::vec2& mov){ - camPos.x += mov.x * (1 - isometricView) + (0.5 * mov.x + mov.y) * isometricView; - camPos.y += -mov.y * (1 - isometricView) + (0.5 * mov.x - mov.y) * isometricView; + camPos.x += mov.x * (1 - isometricView) + (0.5 * mov.x - mov.y) * isometricView; + camPos.y += -mov.y * (1 - isometricView) + (-0.5 * mov.x - mov.y) * isometricView; setCamPos(camPos); } @@ -136,8 +137,8 @@ glm::vec2 getCursorWorldPos(const glm::vec2& cursorPos, float aspectRatio, float float deltaX = relativeX * aspectRatio / zoom; float deltaY = relativeY / zoom; - float worldX = camPos.x + deltaX * (1 - isometricView) + (0.5 * deltaX - deltaY) * isometricView; - float worldY = camPos.y + deltaY * (1 - isometricView) + (0.5 * deltaX + deltaY) * isometricView; + float worldX = camPos.x + deltaX * (1 - isometricView) + (0.5 * deltaX + deltaY) * isometricView; + float worldY = camPos.y + deltaY * (1 - isometricView) + (-0.5 * deltaX + deltaY) * isometricView; return {worldX, worldY}; } diff --git a/src/render/shaders/EntityShader.cpp b/src/render/shaders/EntityShader.cpp index 25e988e..213c535 100644 --- a/src/render/shaders/EntityShader.cpp +++ b/src/render/shaders/EntityShader.cpp @@ -24,8 +24,8 @@ flat out int pass_color; void main(void){ float modelX = position.x + translation.x; float modelY = position.y + translation.y; - float x = (modelX - camPos.x + (modelY - camPos.y) * isometricView) / aspectRatio * zoom; - float y = ((-0.5 * (modelX - camPos.x) + 0.5 * (modelY - camPos.y)) * isometricView + (modelY - camPos.y) * (1 - isometricView)) * zoom; + float x = (modelX - camPos.x - (modelY - camPos.y) * isometricView) / aspectRatio * zoom; + float y = ((0.5 * (modelX - camPos.x) + 0.5 * (modelY - camPos.y)) * isometricView + (modelY - camPos.y) * (1 - isometricView)) * zoom; pass_color = color; gl_Position = vec4(x, -y, 0.0, 1.0); } diff --git a/src/render/shaders/WorldShader.cpp b/src/render/shaders/WorldShader.cpp index 2766256..5187cb1 100644 --- a/src/render/shaders/WorldShader.cpp +++ b/src/render/shaders/WorldShader.cpp @@ -21,8 +21,8 @@ uniform float isometricView; flat out int pass_color; void main(void){ - float x = (position.x - camPos.x + (position.y - camPos.y) * isometricView) / aspectRatio * zoom; - float y = ((-0.5 * (position.x - camPos.x) + 0.5 * (position.y - camPos.y)) * isometricView + (position.y - camPos.y) * (1 - isometricView)) * zoom; + float x = (position.x - camPos.x - (position.y - camPos.y) * isometricView) / aspectRatio * zoom; + float y = ((0.5 * (position.x - camPos.x) + 0.5 * (position.y - camPos.y)) * isometricView + (position.y - camPos.y) * (1 - isometricView)) * zoom; pass_color = color; gl_Position = vec4(x, -y, 0.0, 1.0); }