From f50a346e220ec25a54f701a03e8b7c90a1ad6a0c Mon Sep 17 00:00:00 2001 From: Maximilian Giller Date: Mon, 10 Jul 2023 01:20:22 +0200 Subject: [PATCH] Fixed sprites getting stuck --- src/sprites/masked_sprite.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/sprites/masked_sprite.cpp b/src/sprites/masked_sprite.cpp index f3a407a..edb31cc 100644 --- a/src/sprites/masked_sprite.cpp +++ b/src/sprites/masked_sprite.cpp @@ -29,11 +29,6 @@ void MaskedSprite::preRenderUpdate() return; } - if (previousAngle == angle && previousRenderPosition == renderPosition) - { - return; - } - if (angle == 0) { renderPosition = coordinates->isometric().toScreen(); @@ -45,6 +40,11 @@ void MaskedSprite::preRenderUpdate() sprite->setPosition(renderPosition); sprite->setRotation(angle); + if (previousAngle == angle && previousRenderPosition == renderPosition) + { + return; + } + updateFreshMaskedSprite(); previousAngle = angle; @@ -78,7 +78,7 @@ void MaskedSprite::updateFreshMaskedSprite() coordinatesTopLeftCorner.diagonalWorld().vertical); auto xAxis = rotateVectorByAngle(sf::Vector2f(1, 0), angle); auto yAxis = rotateVectorByAngle(sf::Vector2f(0, -1), angle); - float xFactorPerPixel = sprite->getScale().x / WORLD_TO_ISO_SCALE; + float xFactorPerPixel = sprite->getScale().x / WORLD_TO_ISO_SCALE * sqrt(2); float yFactorPerPixel = sprite->getScale().y / WORLD_TO_ISO_SCALE; for (int yOffset = 0; yOffset < textureRect.height; yOffset++) {