diff options
| -rw-r--r-- | modules/bullet/godot_result_callbacks.cpp | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp index 0aa4c142a6..caa3d677dd 100644 --- a/modules/bullet/godot_result_callbacks.cpp +++ b/modules/bullet/godot_result_callbacks.cpp @@ -63,6 +63,9 @@ bool GodotClosestRayResultCallback::needsCollision(btBroadphaseProxy *proxy0) co  }  bool GodotAllConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) const { +	if (count >= m_resultMax) +		return false; +  	const bool needs = GodotFilterCallback::test_collision_filters(m_collisionFilterGroup, m_collisionFilterMask, proxy0->m_collisionFilterGroup, proxy0->m_collisionFilterMask);  	if (needs) {  		btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject); @@ -70,6 +73,7 @@ bool GodotAllConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) con  		if (m_exclude->has(gObj->get_self())) {  			return false;  		} +  		return true;  	} else {  		return false; @@ -87,7 +91,7 @@ btScalar GodotAllConvexResultCallback::addSingleResult(btCollisionWorld::LocalCo  	result.collider = 0 == result.collider_id ? NULL : ObjectDB::get_instance(result.collider_id);  	++count; -	return count < m_resultMax; +	return 1; // not used by bullet  }  bool GodotKinClosestConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) const { @@ -181,6 +185,9 @@ btScalar GodotAllContactResultCallback::addSingleResult(btManifoldPoint &cp, con  }  bool GodotContactPairContactResultCallback::needsCollision(btBroadphaseProxy *proxy0) const { +	if (m_count >= m_resultMax) +		return false; +  	const bool needs = GodotFilterCallback::test_collision_filters(m_collisionFilterGroup, m_collisionFilterMask, proxy0->m_collisionFilterGroup, proxy0->m_collisionFilterMask);  	if (needs) {  		btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject); @@ -206,7 +213,7 @@ btScalar GodotContactPairContactResultCallback::addSingleResult(btManifoldPoint  	++m_count; -	return m_count < m_resultMax; +	return 1; // Not used by bullet  }  bool GodotRestInfoContactResultCallback::needsCollision(btBroadphaseProxy *proxy0) const { @@ -252,7 +259,7 @@ btScalar GodotRestInfoContactResultCallback::addSingleResult(btManifoldPoint &cp  		m_collided = true;  	} -	return cp.getDistance(); +	return 1; // Not used by bullet  }  void GodotDeepPenetrationContactResultCallback::addContactPoint(const btVector3 &normalOnBInWorld, const btVector3 &pointInWorldOnB, btScalar depth) {  |