From ce270864b28e8eb0503b3427b59dbefd18c4ed06 Mon Sep 17 00:00:00 2001 From: Maximilian Giller Date: Mon, 29 May 2023 00:23:08 +0200 Subject: [PATCH] Implemented movement skewing --- src/config.h | 1 + src/game/input/direction.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/config.h b/src/config.h index a25cc37..2ac9341 100644 --- a/src/config.h +++ b/src/config.h @@ -18,6 +18,7 @@ // Graphic settings #define ISOMETRIC_SKEW 0.3f +#define MOVEMENT_SKEW sf::Vector2f(1.f, 1/ISOMETRIC_SKEW/2.f) #define WORLD_TO_ISO_SCALE 10.0f // Tracking view defaults diff --git a/src/game/input/direction.cpp b/src/game/input/direction.cpp index 3e87101..311dc68 100644 --- a/src/game/input/direction.cpp +++ b/src/game/input/direction.cpp @@ -171,10 +171,15 @@ void Direction::setY(float value) sf::Vector2f Direction::asIsometricVector() const { + auto skewedDirection = sf::Vector2f( + directionVector.x * MOVEMENT_SKEW.x, + directionVector.y * MOVEMENT_SKEW.y + ); + // Rotate vector by 45 degrees clockwise auto isometricVector = sf::Vector2f(0.0f, 0.0f); - isometricVector.x = directionVector.y + directionVector.x; - isometricVector.y = directionVector.y - directionVector.x; + isometricVector.x = skewedDirection.y + skewedDirection.x; + isometricVector.y = skewedDirection.y - skewedDirection.x; return isometricVector / 2.f; }