summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <remi@verschelde.fr>2016-06-24 21:26:54 +0200
committerGitHub <noreply@github.com>2016-06-24 21:26:54 +0200
commit22c9a44174a113a5f41c21c3d8fa22413834a21d (patch)
tree39844ea36da464c1acc0790f19fa1969693a7fa6
parent322c12d8a7d180625e0c6dde0e49852d96a21dcc (diff)
parentfbddc0b7471e7cf62b934e5c9bbb4c05c1313e74 (diff)
Merge pull request #5391 from RandomShaper/parallax-layer-fix-tidy
Improve parallax mirroring algorithm
-rw-r--r--scene/2d/parallax_layer.cpp18
1 files changed, 4 insertions, 14 deletions
diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp
index bf559deb09..a67ea04959 100644
--- a/scene/2d/parallax_layer.cpp
+++ b/scene/2d/parallax_layer.cpp
@@ -92,23 +92,13 @@ void ParallaxLayer::set_base_offset_and_scale(const Point2& p_offset,float p_sca
Point2 new_ofs = ((orig_offset+p_offset)*motion_scale)*p_scale;
if (mirroring.x) {
-
- while( new_ofs.x>=0) {
- new_ofs.x -= mirroring.x*p_scale;
- }
- while(new_ofs.x < -mirroring.x*p_scale) {
- new_ofs.x += mirroring.x*p_scale;
- }
+ double den = mirroring.x*p_scale;
+ new_ofs.x = fmod(new_ofs.x,den) - (mirroring.x > 0 ? den : 0);
}
if (mirroring.y) {
-
- while( new_ofs.y>=0) {
- new_ofs.y -= mirroring.y*p_scale;
- }
- while(new_ofs.y < -mirroring.y*p_scale) {
- new_ofs.y += mirroring.y*p_scale;
- }
+ double den = mirroring.y*p_scale;
+ new_ofs.y = fmod(new_ofs.y,den) - (mirroring.y > 0 ? den : 0);
}