diff options
author | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2020-12-23 20:04:22 -0700 |
---|---|---|
committer | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2020-12-23 20:04:22 -0700 |
commit | 11bee25de4d07497d3bb8f3165937c879f0c9ef8 (patch) | |
tree | 630ff4008557d6ff0b8d7657683454c6561be821 /scene/2d | |
parent | 0923494c78130d69ff6d53737c53e5b6cfc163a2 (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.
Diffstat (limited to 'scene/2d')
-rw-r--r-- | scene/2d/joints_2d.cpp | 8 |
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."); |