summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPouleyKetchoupp <pouleyketchoup@gmail.com>2020-12-23 20:04:22 -0700
committerPouleyKetchoupp <pouleyketchoup@gmail.com>2020-12-23 20:04:22 -0700
commit11bee25de4d07497d3bb8f3165937c879f0c9ef8 (patch)
tree630ff4008557d6ff0b8d7657683454c6561be821
parent0923494c78130d69ff6d53737c53e5b6cfc163a2 (diff)
Update body transforms on joint2D setup
Body transforms from physics are used to setup the joint and they are only updated before the physics step by default. Without forcing the transform update, joints could use a previous position if the body's position was set after it was added to the scene. 3D physics is not affected by this issue.
-rw-r--r--scene/2d/joints_2d.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp
index f5d13fd641..3e37f2d2bb 100644
--- a/scene/2d/joints_2d.cpp
+++ b/scene/2d/joints_2d.cpp
@@ -90,6 +90,14 @@ void Joint2D::_update_joint(bool p_only_free) {
warning = String();
update_configuration_warning();
+ if (body_a) {
+ body_a->force_update_transform();
+ }
+
+ if (body_b) {
+ body_b->force_update_transform();
+ }
+
joint = _configure_joint(body_a, body_b);
ERR_FAIL_COND_MSG(!joint.is_valid(), "Failed to configure the joint.");