From b5480634c36bcc2375b1f0fc8fa58b5a5cc357c0 Mon Sep 17 00:00:00 2001
From: Andrea Catania <info@andreacatania.com>
Date: Thu, 16 Aug 2018 08:23:08 +0200
Subject: [PATCH] Added possibility to create joints with only one body

---
 scene/3d/physics_joint.cpp | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/scene/3d/physics_joint.cpp b/scene/3d/physics_joint.cpp
index 7988c43eabf..a30fc0ac3eb 100644
--- a/scene/3d/physics_joint.cpp
+++ b/scene/3d/physics_joint.cpp
@@ -48,18 +48,14 @@ void Joint::_update_joint(bool p_only_free) {
 	Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)NULL;
 	Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)NULL;
 
-	if (!node_a || !node_b)
-		return;
-
 	PhysicsBody *body_a = Object::cast_to<PhysicsBody>(node_a);
 	PhysicsBody *body_b = Object::cast_to<PhysicsBody>(node_b);
 
-	if (!body_a || !body_b)
-		return;
-
-	if (!body_a) {
+	if (!body_a && body_b)
 		SWAP(body_a, body_b);
-	}
+
+	if (!body_a)
+		return;
 
 	joint = _configure_joint(body_a, body_b);
 
@@ -69,7 +65,8 @@ void Joint::_update_joint(bool p_only_free) {
 	PhysicsServer::get_singleton()->joint_set_solver_priority(joint, solver_priority);
 
 	ba = body_a->get_rid();
-	bb = body_b->get_rid();
+	if (body_b)
+		bb = body_b->get_rid();
 
 	PhysicsServer::get_singleton()->joint_disable_collisions_between_bodies(joint, exclude_from_collision);
 }