mirror of
https://github.com/bulletphysics/bullet3.git
synced 2026-11-04 15:05:38 +00:00
raycast filter masks can be negative, always apply the mask (-1 default). Thanks to Tingnan for reporting/reproduction case.
This commit is contained in:
@@ -5995,12 +5995,9 @@ struct FilteredClosestRayResultCallback : public btCollisionWorld::ClosestRayRes
|
||||
|
||||
virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace)
|
||||
{
|
||||
if (m_collisionFilterMask >= 0)
|
||||
{
|
||||
bool collides = (rayResult.m_collisionObject->getBroadphaseHandle()->m_collisionFilterGroup & m_collisionFilterMask) != 0;
|
||||
if (!collides)
|
||||
return m_closestHitFraction;
|
||||
}
|
||||
bool collides = (rayResult.m_collisionObject->getBroadphaseHandle()->m_collisionFilterGroup & m_collisionFilterMask) != 0;
|
||||
if (!collides)
|
||||
return m_closestHitFraction;
|
||||
return btCollisionWorld::ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
|
||||
}
|
||||
};
|
||||
@@ -6019,12 +6016,9 @@ struct FilteredAllHitsRayResultCallback : public btCollisionWorld::AllHitsRayRes
|
||||
|
||||
virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace)
|
||||
{
|
||||
if (m_collisionFilterMask >= 0)
|
||||
{
|
||||
bool collides = (rayResult.m_collisionObject->getBroadphaseHandle()->m_collisionFilterGroup & m_collisionFilterMask) != 0;
|
||||
if (!collides)
|
||||
return m_closestHitFraction;
|
||||
}
|
||||
bool collides = (rayResult.m_collisionObject->getBroadphaseHandle()->m_collisionFilterGroup & m_collisionFilterMask) != 0;
|
||||
if (!collides)
|
||||
return m_closestHitFraction;
|
||||
//remove duplicate hits:
|
||||
//same collision object, link index and hit fraction
|
||||
bool isDuplicate = false;
|
||||
|
||||
Reference in New Issue
Block a user