Skip to content

Commit

Permalink
Merge pull request #45167 from madmiraal/fix-44703
Browse files Browse the repository at this point in the history
Fix not clearing a Joint3D with only a B node when removing the B node
  • Loading branch information
akien-mga authored Jan 14, 2021
2 parents 8d4698d + 95020d3 commit 156d700
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions scene/3d/physics_joint_3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,21 +114,23 @@ void Joint3D::_update_joint(bool p_only_free) {
return;
}

if (!body_a) {
SWAP(body_a, body_b);
}

warning = String();
update_configuration_warning();

joint = _configure_joint(body_a, body_b);
if (body_a) {
joint = _configure_joint(body_a, body_b);
} else if (body_b) {
joint = _configure_joint(body_b, nullptr);
}

ERR_FAIL_COND_MSG(!joint.is_valid(), "Failed to configure the joint.");

PhysicsServer3D::get_singleton()->joint_set_solver_priority(joint, solver_priority);

ba = body_a->get_rid();
body_a->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree), make_binds(body_a->get_instance_id()));
if (body_a) {
ba = body_a->get_rid();
body_a->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree), make_binds(body_a->get_instance_id()));
}

if (body_b) {
bb = body_b->get_rid();
Expand Down

0 comments on commit 156d700

Please sign in to comment.