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++) {