41 :m_overlappingPairs(pairCache),
42 m_optimizedAabbTree(0),
43 m_ownsPairCache(false),
55 virtual ~btMultiSapOverlapFilterCallback()
70 void* mem =
btAlignedAlloc(
sizeof(btMultiSapOverlapFilterCallback),16);
116 setAabb(proxy,aabbMin,aabbMax,dispatcher);
190 :m_multiSap(multiSap),
191 m_multiProxy(multiProxy),
192 m_dispatcher(dispatcher)
197 virtual void processNode(
int ,
int broadphaseIndex)
201 int containingBroadphaseIndex = -1;
203 for (
int i=0;i<m_multiProxy->m_bridgeProxies.size();i++)
206 if (m_multiProxy->m_bridgeProxies[i]->m_childBroadphase == childBroadphase)
208 containingBroadphaseIndex = i;
212 if (containingBroadphaseIndex<0)
215 btBroadphaseProxy* childProxy = childBroadphase->
createProxy(m_multiProxy->m_aabbMin,m_multiProxy->m_aabbMax,m_multiProxy->m_shapeType,m_multiProxy->m_clientObject,m_multiProxy->m_collisionFilterGroup,m_multiProxy->m_collisionFilterMask, m_dispatcher,m_multiProxy);
216 m_multiSap->addToChildBroadphase(m_multiProxy,childProxy,childBroadphase);
222 MyNodeOverlapCallback myNodeCallback(
this,multiProxy,dispatcher);
235 multiProxy->
m_bridgeProxies[i]->m_childBroadphase->getBroadphaseAabb(worldAabbMin,worldAabbMax);
237 if (!overlapsBroadphase)
351 return aProxy0 > bProxy0 ||
352 (aProxy0 == bProxy0 && aProxy1 > bProxy1) ||
388 for (i=0;i<overlappingPairArray.
size();i++)
398 bool isDuplicate = (aProxy0 == bProxy0) && (aProxy1 == bProxy1);
402 bool needsRemoval =
false;
410 needsRemoval =
false;
438 #define CLEAN_INVALID_PAIRS 1
439 #ifdef CLEAN_INVALID_PAIRS
447 #endif//CLEAN_INVALID_PAIRS
462 multiSapProxy1->m_aabbMin,multiSapProxy1->m_aabbMax);