fix: change render coordinates

This commit is contained in:
2021-09-12 17:11:33 +02:00
parent 78a5703f67
commit e10d67e6eb
3 changed files with 9 additions and 8 deletions

View File

@@ -12,6 +12,7 @@
#include <stdio.h> #include <stdio.h>
#include <glbinding/Binding.h> #include <glbinding/Binding.h>
#include "misc/Time.h" #include "misc/Time.h"
#include "misc/Easing.h"
using namespace gl; using namespace gl;
@@ -112,8 +113,8 @@ void setZoom(float zoom){
} }
void setCamMovement(const glm::vec2& mov){ void setCamMovement(const glm::vec2& mov){
camPos.x += mov.x * (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; camPos.y += -mov.y * (1 - isometricView) + (-0.5 * mov.x - mov.y) * isometricView;
setCamPos(camPos); setCamPos(camPos);
} }
@@ -136,8 +137,8 @@ glm::vec2 getCursorWorldPos(const glm::vec2& cursorPos, float aspectRatio, float
float deltaX = relativeX * aspectRatio / zoom; float deltaX = relativeX * aspectRatio / zoom;
float deltaY = relativeY / zoom; float deltaY = relativeY / zoom;
float worldX = camPos.x + deltaX * (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; float worldY = camPos.y + deltaY * (1 - isometricView) + (-0.5 * deltaX + deltaY) * isometricView;
return {worldX, worldY}; return {worldX, worldY};
} }

View File

@@ -24,8 +24,8 @@ flat out int pass_color;
void main(void){ void main(void){
float modelX = position.x + translation.x; float modelX = position.x + translation.x;
float modelY = position.y + translation.y; float modelY = position.y + translation.y;
float x = (modelX - camPos.x + (modelY - camPos.y) * isometricView) / aspectRatio * 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; float y = ((0.5 * (modelX - camPos.x) + 0.5 * (modelY - camPos.y)) * isometricView + (modelY - camPos.y) * (1 - isometricView)) * zoom;
pass_color = color; pass_color = color;
gl_Position = vec4(x, -y, 0.0, 1.0); gl_Position = vec4(x, -y, 0.0, 1.0);
} }

View File

@@ -21,8 +21,8 @@ uniform float isometricView;
flat out int pass_color; flat out int pass_color;
void main(void){ void main(void){
float x = (position.x - camPos.x + (position.y - camPos.y) * isometricView) / aspectRatio * 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; 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; pass_color = color;
gl_Position = vec4(x, -y, 0.0, 1.0); gl_Position = vec4(x, -y, 0.0, 1.0);
} }