Skip to content

Commit

Permalink
Merge pull request #37311 from MickeMakaron/handle-huge-path2d-offset…
Browse files Browse the repository at this point in the history
…-values

Handle huge path2d offset values
  • Loading branch information
akien-mga authored Apr 13, 2020
2 parents 06748a2 + 2edb59e commit 6366332
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 14 deletions.
12 changes: 5 additions & 7 deletions scene/2d/path_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -321,16 +321,14 @@ void PathFollow2D::set_offset(float p_offset) {

offset = p_offset;
if (path) {
if (path->get_curve().is_valid() && path->get_curve()->get_baked_length()) {
if (path->get_curve().is_valid()) {
float path_length = path->get_curve()->get_baked_length();

if (loop) {
while (offset > path_length)
offset -= path_length;

while (offset < 0)
offset += path_length;

offset = Math::fposmod(offset, path_length);
if (!Math::is_zero_approx(p_offset) && Math::is_zero_approx(offset)) {
offset = path_length;
}
} else {
offset = CLAMP(offset, 0, path_length);
}
Expand Down
12 changes: 5 additions & 7 deletions scene/3d/path_3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,16 +316,14 @@ void PathFollow3D::set_offset(float p_offset) {
offset = p_offset;

if (path) {
if (path->get_curve().is_valid() && path->get_curve()->get_baked_length()) {
if (path->get_curve().is_valid()) {
float path_length = path->get_curve()->get_baked_length();

if (loop) {
while (offset > path_length)
offset -= path_length;

while (offset < 0)
offset += path_length;

offset = Math::fposmod(offset, path_length);
if (!Math::is_zero_approx(p_offset) && Math::is_zero_approx(offset)) {
offset = path_length;
}
} else {
offset = CLAMP(offset, 0, path_length);
}
Expand Down

0 comments on commit 6366332

Please sign in to comment.