summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeegan Owsley <keegano@gmail.com>2020-08-25 19:00:23 -0700
committerKeegan Owsley <keegano@gmail.com>2020-08-26 08:25:28 -0700
commite148338d428de9d23517c5410853a94dc72458ff (patch)
tree22ef98c16f921d11a46bd1dd8126e3a1f724d23e
parent443686d724ce8ac58dcdf09389e9f996aee866c1 (diff)
Wrap angles to (-pi, pi) in momentum calculation.
Fixes a bug that causes KinematicBody2Ds to produce too much angular momentum when rotating beyond 180 degrees.
-rw-r--r--servers/physics_2d/body_2d_sw.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp
index 856bba78f7..75c9a95739 100644
--- a/servers/physics_2d/body_2d_sw.cpp
+++ b/servers/physics_2d/body_2d_sw.cpp
@@ -468,7 +468,7 @@ void Body2DSW::integrate_forces(real_t p_step) {
linear_velocity = motion / p_step;
real_t rot = new_transform.get_rotation() - get_transform().get_rotation();
- angular_velocity = rot / p_step;
+ angular_velocity = remainder(rot, 2.0 * Math_PI) / p_step;
do_motion = true;