Browse Source

Use the correct method in shape_owner_remove_shape

trollodel 4 years ago
parent
commit
a24c46e7a0
2 changed files with 4 additions and 4 deletions
  1. 3 3
      scene/3d/collision_object_3d.cpp
  2. 1 1
      scene/3d/collision_object_3d.h

+ 3 - 3
scene/3d/collision_object_3d.cpp

@@ -200,7 +200,7 @@ void CollisionObject3D::_update_shape_data(uint32_t p_owner) {
 	}
 	}
 }
 }
 
 
-void CollisionObject3D::_shape_changed(Ref<Shape3D> p_shape) {
+void CollisionObject3D::_shape_changed(const Ref<Shape3D> &p_shape) {
 	for (Map<uint32_t, ShapeData>::Element *E = shapes.front(); E; E = E->next()) {
 	for (Map<uint32_t, ShapeData>::Element *E = shapes.front(); E; E = E->next()) {
 		ShapeData &shapedata = E->get();
 		ShapeData &shapedata = E->get();
 		ShapeData::ShapeBase *shapes = shapedata.shapes.ptrw();
 		ShapeData::ShapeBase *shapes = shapedata.shapes.ptrw();
@@ -485,8 +485,8 @@ void CollisionObject3D::shape_owner_remove_shape(uint32_t p_owner, int p_shape)
 
 
 	if (s.debug_shape.is_valid()) {
 	if (s.debug_shape.is_valid()) {
 		RS::get_singleton()->free(s.debug_shape);
 		RS::get_singleton()->free(s.debug_shape);
-		if (s.shape.is_valid() && s.shape->is_connected("changed", callable_mp(this, &CollisionObject3D::_update_shape_data))) {
-			s.shape->disconnect("changed", callable_mp(this, &CollisionObject3D::_update_shape_data));
+		if (s.shape.is_valid() && s.shape->is_connected("changed", callable_mp(this, &CollisionObject3D::_shape_changed))) {
+			s.shape->disconnect("changed", callable_mp(this, &CollisionObject3D::_shape_changed));
 		}
 		}
 		--debug_shapes_count;
 		--debug_shapes_count;
 	}
 	}

+ 1 - 1
scene/3d/collision_object_3d.h

@@ -72,7 +72,7 @@ class CollisionObject3D : public Node3D {
 
 
 	bool _are_collision_shapes_visible();
 	bool _are_collision_shapes_visible();
 	void _update_shape_data(uint32_t p_owner);
 	void _update_shape_data(uint32_t p_owner);
-	void _shape_changed(Ref<Shape3D> p_shape);
+	void _shape_changed(const Ref<Shape3D> &p_shape);
 	void _update_debug_shapes();
 	void _update_debug_shapes();
 	void _clear_debug_shapes();
 	void _clear_debug_shapes();