fixed memoryleak,

added RayTestSingle to CollisionWorld
prepared to add VehicleDemo
This commit is contained in:
ejcoumans
2006-09-04 21:28:32 +00:00
parent 1048793061
commit a0c157ed85
10 changed files with 1131 additions and 4 deletions

View File

@@ -103,6 +103,8 @@ void CollisionWorld::PerformDiscreteCollisionDetection()
m_pairCache->SetAabb(m_collisionObjects[i]->m_broadphaseHandle,aabbMin,aabbMax);
}
m_pairCache->RefreshOverlappingPairs();
Dispatcher* dispatcher = GetDispatcher();
if (dispatcher)
dispatcher->DispatchAllCollisionPairs(&m_pairCache->GetOverlappingPair(0),m_pairCache->GetNumOverlappingPairs(),dispatchInfo);
@@ -140,11 +142,11 @@ void CollisionWorld::RemoveCollisionObject(CollisionObject* collisionObject)
}
}
void RayTestSingle(const SimdTransform& rayFromTrans,const SimdTransform& rayToTrans,
void CollisionWorld::RayTestSingle(const SimdTransform& rayFromTrans,const SimdTransform& rayToTrans,
CollisionObject* collisionObject,
const CollisionShape* collisionShape,
const SimdTransform& colObjWorldTransform,
CollisionWorld::RayResultCallback& resultCallback)
RayResultCallback& resultCallback)
{
SphereShape pointShape(0.0f);

View File

@@ -204,8 +204,18 @@ public:
return m_collisionObjects.size();
}
/// RayTest performs a raycast on all objects in the CollisionWorld, and calls the resultCallback
/// This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback.
void RayTest(const SimdVector3& rayFromWorld, const SimdVector3& rayToWorld, RayResultCallback& resultCallback);
/// RayTestSingle performs a raycast call and calls the resultCallback. It is used internally by RayTest.
/// In a future implementation, we consider moving the ray test as a virtual method in CollisionShape.
/// This allows more customization.
void RayTestSingle(const SimdTransform& rayFromTrans,const SimdTransform& rayToTrans,
CollisionObject* collisionObject,
const CollisionShape* collisionShape,
const SimdTransform& colObjWorldTransform,
RayResultCallback& resultCallback);
void AddCollisionObject(CollisionObject* collisionObject,short int collisionFilterGroup=1,short int collisionFilterMask=1);