diff options
| -rw-r--r-- | scene/2d/joints_2d.cpp | 18 | ||||
| -rw-r--r-- | scene/2d/joints_2d.h | 2 | ||||
| -rw-r--r-- | scene/3d/physics_joint_3d.cpp | 18 | ||||
| -rw-r--r-- | scene/3d/physics_joint_3d.h | 2 | 
4 files changed, 10 insertions, 30 deletions
diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp index f4f08674c9..7d9cdd52ac 100644 --- a/scene/2d/joints_2d.cpp +++ b/scene/2d/joints_2d.cpp @@ -49,19 +49,9 @@ void Joint2D::_disconnect_signals() {  	}  } -void Joint2D::_body_exit_tree(const ObjectID &p_body_id) { +void Joint2D::_body_exit_tree() {  	_disconnect_signals(); -	Object *object = ObjectDB::get_instance(p_body_id); -	PhysicsBody2D *body = Object::cast_to<PhysicsBody2D>(object); -	ERR_FAIL_NULL(body); -	RID body_rid = body->get_rid(); -	if (ba == body_rid) { -		a = NodePath(); -	} -	if (bb == body_rid) { -		b = NodePath(); -	} -	_update_joint(); +	_update_joint(true);  }  void Joint2D::_update_joint(bool p_only_free) { @@ -142,8 +132,8 @@ void Joint2D::_update_joint(bool p_only_free) {  	ba = body_a->get_rid();  	bb = body_b->get_rid(); -	body_a->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint2D::_body_exit_tree), make_binds(body_a->get_instance_id())); -	body_b->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint2D::_body_exit_tree), make_binds(body_b->get_instance_id())); +	body_a->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint2D::_body_exit_tree)); +	body_b->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint2D::_body_exit_tree));  	PhysicsServer2D::get_singleton()->joint_disable_collisions_between_bodies(joint, exclude_from_collision);  } diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h index 3607a6c176..08e02ee29d 100644 --- a/scene/2d/joints_2d.h +++ b/scene/2d/joints_2d.h @@ -51,7 +51,7 @@ class Joint2D : public Node2D {  protected:  	void _disconnect_signals(); -	void _body_exit_tree(const ObjectID &p_body_id); +	void _body_exit_tree();  	void _update_joint(bool p_only_free = false);  	void _notification(int p_what); diff --git a/scene/3d/physics_joint_3d.cpp b/scene/3d/physics_joint_3d.cpp index 0463bed9d6..d9aaed3713 100644 --- a/scene/3d/physics_joint_3d.cpp +++ b/scene/3d/physics_joint_3d.cpp @@ -46,19 +46,9 @@ void Joint3D::_disconnect_signals() {  	}  } -void Joint3D::_body_exit_tree(const ObjectID &p_body_id) { +void Joint3D::_body_exit_tree() {  	_disconnect_signals(); -	Object *object = ObjectDB::get_instance(p_body_id); -	PhysicsBody3D *body = Object::cast_to<PhysicsBody3D>(object); -	ERR_FAIL_NULL(body); -	RID body_rid = body->get_rid(); -	if (ba == body_rid) { -		a = NodePath(); -	} -	if (bb == body_rid) { -		b = NodePath(); -	} -	_update_joint(); +	_update_joint(true);  }  void Joint3D::_update_joint(bool p_only_free) { @@ -133,12 +123,12 @@ void Joint3D::_update_joint(bool p_only_free) {  	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())); +		body_a->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree));  	}  	if (body_b) {  		bb = body_b->get_rid(); -		body_b->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree), make_binds(body_b->get_instance_id())); +		body_b->connect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree));  	}  	PhysicsServer3D::get_singleton()->joint_disable_collisions_between_bodies(joint, exclude_from_collision); diff --git a/scene/3d/physics_joint_3d.h b/scene/3d/physics_joint_3d.h index 8d0a16e432..f624ba602b 100644 --- a/scene/3d/physics_joint_3d.h +++ b/scene/3d/physics_joint_3d.h @@ -51,7 +51,7 @@ class Joint3D : public Node3D {  protected:  	void _disconnect_signals(); -	void _body_exit_tree(const ObjectID &p_body_id); +	void _body_exit_tree();  	void _update_joint(bool p_only_free = false);  	void _notification(int p_what);  |