diff options
Diffstat (limited to 'scene/3d/physics/joints')
-rw-r--r-- | scene/3d/physics/joints/cone_twist_joint_3d.cpp | 2 | ||||
-rw-r--r-- | scene/3d/physics/joints/joint_3d.cpp | 14 | ||||
-rw-r--r-- | scene/3d/physics/joints/slider_joint_3d.cpp | 2 |
3 files changed, 8 insertions, 10 deletions
diff --git a/scene/3d/physics/joints/cone_twist_joint_3d.cpp b/scene/3d/physics/joints/cone_twist_joint_3d.cpp index 404c074911..3da0cbee71 100644 --- a/scene/3d/physics/joints/cone_twist_joint_3d.cpp +++ b/scene/3d/physics/joints/cone_twist_joint_3d.cpp @@ -30,8 +30,6 @@ #include "cone_twist_joint_3d.h" -#include "scene/scene_string_names.h" - void ConeTwistJoint3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_param", "param", "value"), &ConeTwistJoint3D::set_param); ClassDB::bind_method(D_METHOD("get_param", "param"), &ConeTwistJoint3D::get_param); diff --git a/scene/3d/physics/joints/joint_3d.cpp b/scene/3d/physics/joints/joint_3d.cpp index a9c2526bd0..47c89f37e2 100644 --- a/scene/3d/physics/joints/joint_3d.cpp +++ b/scene/3d/physics/joints/joint_3d.cpp @@ -30,19 +30,17 @@ #include "joint_3d.h" -#include "scene/scene_string_names.h" - void Joint3D::_disconnect_signals() { Node *node_a = get_node_or_null(a); PhysicsBody3D *body_a = Object::cast_to<PhysicsBody3D>(node_a); if (body_a) { - body_a->disconnect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree)); + body_a->disconnect(SceneStringName(tree_exiting), callable_mp(this, &Joint3D::_body_exit_tree)); } Node *node_b = get_node_or_null(b); PhysicsBody3D *body_b = Object::cast_to<PhysicsBody3D>(node_b); if (body_b) { - body_b->disconnect(SceneStringNames::get_singleton()->tree_exiting, callable_mp(this, &Joint3D::_body_exit_tree)); + body_b->disconnect(SceneStringName(tree_exiting), callable_mp(this, &Joint3D::_body_exit_tree)); } } @@ -108,12 +106,16 @@ 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)); + if (!body_a->is_connected(SceneStringName(tree_exiting), callable_mp(this, &Joint3D::_body_exit_tree))) { + body_a->connect(SceneStringName(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)); + if (!body_b->is_connected(SceneStringName(tree_exiting), callable_mp(this, &Joint3D::_body_exit_tree))) { + body_b->connect(SceneStringName(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/joints/slider_joint_3d.cpp b/scene/3d/physics/joints/slider_joint_3d.cpp index 2e87ae1e83..df6b1cc045 100644 --- a/scene/3d/physics/joints/slider_joint_3d.cpp +++ b/scene/3d/physics/joints/slider_joint_3d.cpp @@ -30,8 +30,6 @@ #include "slider_joint_3d.h" -#include "scene/scene_string_names.h" - void SliderJoint3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_param", "param", "value"), &SliderJoint3D::set_param); ClassDB::bind_method(D_METHOD("get_param", "param"), &SliderJoint3D::get_param); |