Partial repair of raycast system with Bullet 2.71. Still to be done: face and normal information

This commit is contained in:
Benoit Bolsee 2008-09-04 23:07:43 +00:00
parent d682dc5bd5
commit 2d50ead6b8

@ -721,17 +721,20 @@ struct FilterClosestRayResultCallback : public btCollisionWorld::ClosestRayResul
{ {
} }
virtual bool NeedRayCast(btCollisionObject* object) virtual bool needsCollision(btBroadphaseProxy* proxy0) const
{ {
if (!(proxy0->m_collisionFilterGroup & m_collisionFilterMask))
return false;
if (!(m_collisionFilterGroup & proxy0->m_collisionFilterMask))
return false;
btCollisionObject* object = (btCollisionObject*)proxy0->m_clientObject;
CcdPhysicsController* phyCtrl = static_cast<CcdPhysicsController*>(object->getUserPointer()); CcdPhysicsController* phyCtrl = static_cast<CcdPhysicsController*>(object->getUserPointer());
if (phyCtrl != m_phyRayFilter.m_ignoreController) if (phyCtrl == m_phyRayFilter.m_ignoreController)
{ return false;
return m_phyRayFilter.needBroadphaseRayCast(phyCtrl); return m_phyRayFilter.needBroadphaseRayCast(phyCtrl);
} }
return false;
}
virtual float AddSingleResult( btCollisionWorld::LocalRayResult& rayResult) virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace)
{ {
CcdPhysicsController* curHit = static_cast<CcdPhysicsController*>(rayResult.m_collisionObject->getUserPointer()); CcdPhysicsController* curHit = static_cast<CcdPhysicsController*>(rayResult.m_collisionObject->getUserPointer());
// save shape information as ClosestRayResultCallback::AddSingleResult() does not do it // save shape information as ClosestRayResultCallback::AddSingleResult() does not do it
@ -744,8 +747,7 @@ struct FilterClosestRayResultCallback : public btCollisionWorld::ClosestRayResul
m_hitTriangleShape = NULL; m_hitTriangleShape = NULL;
m_hitTriangleIndex = 0; m_hitTriangleIndex = 0;
} }
bool normalInWorldspace = true; return ClosestRayResultCallback::addSingleResult(rayResult,normalInWorldSpace);
return ClosestRayResultCallback::addSingleResult(rayResult,normalInWorldspace);
} }
}; };