Fixed sprites getting stuck

This commit is contained in:
Maximilian Giller 2023-07-10 01:20:22 +02:00
parent 7703128749
commit f50a346e22

View file

@ -29,11 +29,6 @@ void MaskedSprite::preRenderUpdate()
return; return;
} }
if (previousAngle == angle && previousRenderPosition == renderPosition)
{
return;
}
if (angle == 0) if (angle == 0)
{ {
renderPosition = coordinates->isometric().toScreen(); renderPosition = coordinates->isometric().toScreen();
@ -45,6 +40,11 @@ void MaskedSprite::preRenderUpdate()
sprite->setPosition(renderPosition); sprite->setPosition(renderPosition);
sprite->setRotation(angle); sprite->setRotation(angle);
if (previousAngle == angle && previousRenderPosition == renderPosition)
{
return;
}
updateFreshMaskedSprite(); updateFreshMaskedSprite();
previousAngle = angle; previousAngle = angle;
@ -78,7 +78,7 @@ void MaskedSprite::updateFreshMaskedSprite()
coordinatesTopLeftCorner.diagonalWorld().vertical); coordinatesTopLeftCorner.diagonalWorld().vertical);
auto xAxis = rotateVectorByAngle(sf::Vector2f(1, 0), angle); auto xAxis = rotateVectorByAngle(sf::Vector2f(1, 0), angle);
auto yAxis = rotateVectorByAngle(sf::Vector2f(0, -1), 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; float yFactorPerPixel = sprite->getScale().y / WORLD_TO_ISO_SCALE;
for (int yOffset = 0; yOffset < textureRect.height; yOffset++) for (int yOffset = 0; yOffset < textureRect.height; yOffset++)
{ {