aboutsummaryrefslogtreecommitdiff
path: root/src/collision.cpp
diff options
context:
space:
mode:
authorJude Melton-Houghton <jwmhjwmh@gmail.com>2022-09-30 06:31:24 -0400
committerGitHub <noreply@github.com>2022-09-30 06:31:24 -0400
commite832cee1e60c3e615d38711a87737691245df35d (patch)
tree8cd24137c7f2b6d137ead252c68853b52155a996 /src/collision.cpp
parent6eb7d57ed335d43a893992ff7cc388075f37ad5f (diff)
downloadminetest-e832cee1e60c3e615d38711a87737691245df35d.tar.xz
Avert collision static detection rounding error (#12822)
Diffstat (limited to 'src/collision.cpp')
-rw-r--r--src/collision.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/collision.cpp b/src/collision.cpp
index 1ef094d29..e363673fe 100644
--- a/src/collision.cpp
+++ b/src/collision.cpp
@@ -250,11 +250,12 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
time_notification_done = false;
}
- v3f newpos_f = *pos_f + (*speed_f + accel_f * 0.5f * dtime) * dtime;
+ v3f dpos_f = (*speed_f + accel_f * 0.5f * dtime) * dtime;
+ v3f newpos_f = *pos_f + dpos_f;
*speed_f += accel_f * dtime;
// If the object is static, there are no collisions
- if (newpos_f == *pos_f)
+ if (dpos_f == v3f())
return result;
// Limit speed for avoiding hangs