more work on parallel dispatching of simulation islands

This commit is contained in:
ejcoumans
2006-07-01 03:33:05 +00:00
parent 57e8bd87d1
commit a359212fb3
13 changed files with 694 additions and 353 deletions

View File

@@ -179,7 +179,7 @@ void CollisionDispatcher::ReleaseManifoldResult(ManifoldResult*)
}
void CollisionDispatcher::DispatchAllCollisionPairs(OverlappingPairCache* pairCache,DispatcherInfo& dispatchInfo)
void CollisionDispatcher::DispatchAllCollisionPairs(BroadphasePair* pairs,int numPairs,DispatcherInfo& dispatchInfo)
{
//m_blockedForChanges = true;
@@ -187,12 +187,12 @@ void CollisionDispatcher::DispatchAllCollisionPairs(OverlappingPairCache* pairCa
int dispatcherId = GetUniqueId();
pairCache->RefreshOverlappingPairs();
for (i=0;i<pairCache->GetNumOverlappingPairs();i++)
for (i=0;i<numPairs;i++)
{
BroadphasePair& pair = pairCache->GetOverlappingPair(i);
BroadphasePair& pair = pairs[i];
if (dispatcherId>= 0)
{

View File

@@ -103,7 +103,7 @@ public:
virtual int GetUniqueId() { return RIGIDBODY_DISPATCHER;}
virtual void DispatchAllCollisionPairs(OverlappingPairCache* pairCache,DispatcherInfo& dispatchInfo);
virtual void DispatchAllCollisionPairs(BroadphasePair* pairs,int numPairs,DispatcherInfo& dispatchInfo);

View File

@@ -104,7 +104,7 @@ void CollisionWorld::PerformDiscreteCollisionDetection()
Dispatcher* dispatcher = GetDispatcher();
if (dispatcher)
dispatcher->DispatchAllCollisionPairs(m_pairCache,dispatchInfo);
dispatcher->DispatchAllCollisionPairs(&m_pairCache->GetOverlappingPair(0),m_pairCache->GetNumOverlappingPairs(),dispatchInfo);
}

View File

@@ -84,14 +84,14 @@ class CollisionWorld
std::vector<CollisionObject*> m_collisionObjects;
CollisionDispatcher* m_dispatcher1;
Dispatcher* m_dispatcher1;
OverlappingPairCache* m_pairCache;
public:
CollisionWorld(CollisionDispatcher* dispatcher,OverlappingPairCache* pairCache)
CollisionWorld(Dispatcher* dispatcher,OverlappingPairCache* pairCache)
:m_dispatcher1(dispatcher),
m_pairCache(pairCache)
{