Browse Source

Merge pull request #5447 from RandomShaper/parallax-layer-fix-tidy

Improve parallax mirroring algorithm
Juan Linietsky 9 years ago
parent
commit
ba625a14c6
1 changed files with 4 additions and 15 deletions
  1. 4 15
      scene/2d/parallax_layer.cpp

+ 4 - 15
scene/2d/parallax_layer.cpp

@@ -123,26 +123,15 @@ 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+motion_offset;
 	Point2 new_ofs = ((orig_offset+p_offset)*motion_scale)*p_scale+motion_offset;
 
 
 	if (mirroring.x) {
 	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 -= den*ceil(new_ofs.x/den);
 	}
 	}
 
 
 	if (mirroring.y) {
 	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 -= den*ceil(new_ofs.y/den);
 	}
 	}
 
 
-
 	set_pos(new_ofs);
 	set_pos(new_ofs);
 	set_scale(Vector2(1,1)*p_scale);
 	set_scale(Vector2(1,1)*p_scale);