diff options
author | Keegan Owsley <keegano@gmail.com> | 2020-08-25 19:00:23 -0700 |
---|---|---|
committer | Keegan Owsley <keegano@gmail.com> | 2020-08-26 08:25:28 -0700 |
commit | e148338d428de9d23517c5410853a94dc72458ff (patch) | |
tree | 22ef98c16f921d11a46bd1dd8126e3a1f724d23e | |
parent | 443686d724ce8ac58dcdf09389e9f996aee866c1 (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.cpp | 2 |
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; |