diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-07-24 12:19:27 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-24 12:19:27 -0300 |
commit | ba625a14c64e451be46a18fb2e6ee37a7d2aa24b (patch) | |
tree | 69f65c7732f70e6b59fed00c7c843fd1f87ab997 /scene/2d | |
parent | 9213400cd552b09667445916f812db186626fb50 (diff) | |
parent | 6ce47d9b51f6f540a8d3b6aece32ec0efdf2a37f (diff) |
Merge pull request #5447 from RandomShaper/parallax-layer-fix-tidy
Improve parallax mirroring algorithm
Diffstat (limited to 'scene/2d')
-rw-r--r-- | scene/2d/parallax_layer.cpp | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp index e9378b1d02..05136de5d6 100644 --- a/scene/2d/parallax_layer.cpp +++ b/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; 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) { - - 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_scale(Vector2(1,1)*p_scale); |