summaryrefslogtreecommitdiff
path: root/scene/3d/path_3d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/3d/path_3d.cpp')
-rw-r--r--scene/3d/path_3d.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/scene/3d/path_3d.cpp b/scene/3d/path_3d.cpp
index 0f1f9bb8a7..4a425d1e0e 100644
--- a/scene/3d/path_3d.cpp
+++ b/scene/3d/path_3d.cpp
@@ -229,7 +229,7 @@ void PathFollow3D::_notification(int p_what) {
} break;
case NOTIFICATION_EXIT_TREE: {
- path = NULL;
+ path = nullptr;
} break;
}
}
@@ -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);
}
@@ -409,7 +407,7 @@ PathFollow3D::PathFollow3D() {
delta_offset = 0;
h_offset = 0;
v_offset = 0;
- path = NULL;
+ path = nullptr;
rotation_mode = ROTATION_XYZ;
cubic = true;
loop = true;