diff --git a/source/moving_sprite.cpp b/source/moving_sprite.cpp index 73f1c0f..f453607 100644 --- a/source/moving_sprite.cpp +++ b/source/moving_sprite.cpp @@ -1,5 +1,6 @@ #include "moving_sprite.h" +#include // Para std::abs #include #include "texture.h" // Para Texture @@ -98,9 +99,11 @@ void MovingSprite::startRotate() { } // Detiene la rotación y resetea el ángulo a cero -void MovingSprite::stopRotate() { - rotate_.enabled = false; - rotate_.angle = 0.0; +void MovingSprite::stopRotate(float threshold) { + if (threshold == 0.0F || std::abs(rotate_.amount) <= threshold) { + rotate_.enabled = false; + rotate_.angle = 0.0; + } } // Establece la posición y_ el tamaño del objeto diff --git a/source/moving_sprite.h b/source/moving_sprite.h index 9fc64ec..163cfe0 100644 --- a/source/moving_sprite.h +++ b/source/moving_sprite.h @@ -47,7 +47,7 @@ class MovingSprite : public Sprite { void setRotatingCenter(SDL_FPoint point) { rotate_.center = point; } // Establece el centro de rotación void setRotate(bool enable); // Activa o desactiva el efecto de rotación void startRotate(); // Habilita la rotación con centro automático - void stopRotate(); // Detiene la rotación y resetea ángulo + void stopRotate(float threshold = 0.0F); // Detiene la rotación y resetea ángulo void setRotateAmount(double value) { rotate_.amount = value; } // Establece la velocidad de rotación void scaleRotateAmount(float value) { rotate_.amount *= value; } // Modifica la velocidad de rotacion void switchRotate() { rotate_.amount *= -1; } // Cambia el sentido de la rotación