31 m_overlapFilterCallback(0),
32 m_ghostPairCallback(0)
34 int initialAllocatedSize= 2;
74 :m_cleanProxy(cleanProxy),
75 m_pairCache(pairCache),
76 m_dispatcher(dispatcher)
91 CleanPairCallback cleanPairs(proxy,
this,dispatcher);
109 :m_obsoleteProxy(obsoleteProxy)
114 return ((pair.
m_pProxy0 == m_obsoleteProxy) ||
121 RemovePairCallback removeCallback(proxy);
134 int proxyId1 = proxy0->
getUid();
135 int proxyId2 = proxy1->
getUid();
181 for (i= 0; i < newCapacity; ++i)
185 for (i = 0; i < newCapacity; ++i)
190 for(i=0;i<curHashtableSize;i++)
211 int proxyId1 = proxy0->
getUid();
212 int proxyId2 = proxy1->
getUid();
244 if (oldCapacity < newCapacity)
270 int proxyId1 = proxy0->
getUid();
271 int proxyId2 = proxy1->
getUid();
299 while (index != pairIndex)
325 if (lastPairIndex == pairIndex)
340 while (index != lastPairIndex)
371 BT_PROFILE(
"btHashedOverlappingPairCache::processAllOverlappingPairs");
406 return uidA0 > uidB0 || (uidA0 == uidB0 && uidA1 > uidB1);
419 for (
int i=0;i<indices.
size();i++)
425 indices[i].m_uidA0 = uidA0;
426 indices[i].m_uidA1 = uidA1;
427 indices[i].m_orgIndex = i;
432 BT_PROFILE(
"btHashedOverlappingPairCache::processAllOverlappingPairs");
434 for (i=0;i<indices.
size();)
463 for (i=0;i<tmpPairs.
size();i++)
475 for (i=0;i<tmpPairs.
size();i++)
591 m_blockedForChanges(false),
592 m_hasDeferredRemoval(true),
596 int initialAllocatedSize= 2;
628 :m_cleanProxy(cleanProxy),
629 m_pairCache(pairCache),
630 m_dispatcher(dispatcher)
645 CleanPairCallback cleanPairs(proxy,
this,dispatcher);
661 :m_obsoleteProxy(obsoleteProxy)
666 return ((pair.
m_pProxy0 == m_obsoleteProxy) ||
672 RemovePairCallback removeCallback(proxy);
virtual bool hasDeferredRemoval()
void push_back(const T &_Val)
virtual void processAllOverlappingPairs(btOverlapCallback *, btDispatcher *dispatcher)
virtual void cleanOverlappingPair(btBroadphasePair &pair, btDispatcher *dispatcher)=0
bool needsBroadphaseCollision(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1) const
btBroadphasePair * internalFindPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1, int hash)
btAlignedObjectArray< int > m_hashTable
btBroadphasePairArray & getOverlappingPairArray()
btBroadphasePairArray m_overlappingPairArray
bool equalsPair(const btBroadphasePair &pair, int proxyId1, int proxyId2)
virtual ~btCollisionAlgorithm()
btOverlappingPairCallback * m_ghostPairCallback
btOverlapFilterCallback * m_overlapFilterCallback
void cleanProxyFromPairs(btBroadphaseProxy *proxy, btDispatcher *dispatcher)
void swap(int index0, int index1)
The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases.
virtual void sortOverlappingPairs(btDispatcher *dispatcher)
unsigned int getHash(unsigned int proxyId1, unsigned int proxyId2)
int size() const
return the number of elements in the array
btHashedOverlappingPairCache()
btBroadphasePair * internalAddPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1)
void cleanOverlappingPair(btBroadphasePair &pair, btDispatcher *dispatcher)
btBroadphasePair * addOverlappingPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1)
btBroadphasePair * findPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1)
virtual void freeCollisionAlgorithm(void *ptr)=0
virtual bool processOverlap(btBroadphasePair &pair)=0
void * removeOverlappingPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1, btDispatcher *dispatcher)
btAlignedObjectArray< int > m_next
btSortedOverlappingPairCache()
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
btBroadphaseProxy * m_pProxy1
btCollisionAlgorithm * m_algorithm
int capacity() const
return the pre-allocated (reserved) elements, this is at least as large as the total number of elemen...
virtual void * removeOverlappingPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1, btDispatcher *dispatcher)
btBroadphasePairArray m_overlappingPairArray
btBroadphaseProxy * m_pProxy0
virtual void sortOverlappingPairs(btDispatcher *dispatcher)
virtual btBroadphasePair * addOverlappingPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1)=0
void resize(int newsize, const T &fillData=T())
int findLinearSearch(const T &key) const
void removeOverlappingPairsContainingProxy(btBroadphaseProxy *proxy, btDispatcher *dispatcher)
bool m_deterministicOverlappingPairs
virtual btBroadphasePair * addOverlappingPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1)
virtual void processAllOverlappingPairs(btOverlapCallback *, btDispatcher *dispatcher)
virtual ~btSortedOverlappingPairCache()
void cleanProxyFromPairs(btBroadphaseProxy *proxy, btDispatcher *dispatcher)
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
T & expandNonInitializing()
btBroadphasePair * findPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1)
this findPair becomes really slow.
void removeOverlappingPairsContainingProxy(btBroadphaseProxy *proxy, btDispatcher *dispatcher)
void cleanOverlappingPair(btBroadphasePair &pair, btDispatcher *dispatcher)
virtual ~btHashedOverlappingPairCache()
void quickSort(const L &CompareFunc)
virtual void * removeOverlappingPair(btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1, btDispatcher *dispatcher)=0
The btBroadphasePair class contains a pair of aabb-overlapping objects.