diff options
Diffstat (limited to 'modules/bullet/collision_object_bullet.cpp')
| -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 {  |