diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-03-07 00:21:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-07 00:21:13 +0100 |
commit | dea8105a38fb535c4f5e5da7eb4e81d2e11b6cb2 (patch) | |
tree | a4db645ad8852322b834a39c0405e356381adfa5 | |
parent | 9bc9948cbf526d995b5e35915ddfcd4592cd8e45 (diff) | |
parent | c47070e1657913d6a79fd5eaa81e588fe7146932 (diff) |
Merge pull request #46704 from Duddino/master
Checking if there is a collider when calling `SoftBody::remove_collision_exception_with`
-rw-r--r-- | modules/bullet/collision_object_bullet.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp index bce8ec8076..d9f5beb5a1 100644 --- a/modules/bullet/collision_object_bullet.cpp +++ b/modules/bullet/collision_object_bullet.cpp @@ -148,6 +148,9 @@ void CollisionObjectBullet::add_collision_exception(const CollisionObjectBullet void CollisionObjectBullet::remove_collision_exception(const CollisionObjectBullet *p_ignoreCollisionObject) { exceptions.erase(p_ignoreCollisionObject->get_self()); + if (!bt_collision_object) { + return; + } bt_collision_object->setIgnoreCollisionCheck(p_ignoreCollisionObject->bt_collision_object, false); if (space) { space->get_broadphase()->getOverlappingPairCache()->cleanProxyFromPairs(bt_collision_object->getBroadphaseHandle(), space->get_dispatcher()); @@ -155,11 +158,14 @@ void CollisionObjectBullet::remove_collision_exception(const CollisionObjectBull } bool CollisionObjectBullet::has_collision_exception(const CollisionObjectBullet *p_otherCollisionObject) const { - return !bt_collision_object->checkCollideWith(p_otherCollisionObject->bt_collision_object); + return exceptions.has(p_otherCollisionObject->get_self()); } void CollisionObjectBullet::set_collision_enabled(bool p_enabled) { collisionsEnabled = p_enabled; + if (!bt_collision_object) { + return; + } if (collisionsEnabled) { bt_collision_object->setCollisionFlags(bt_collision_object->getCollisionFlags() & (~btCollisionObject::CF_NO_CONTACT_RESPONSE)); } else { |