47 int gridSizeX,
int gridSizeY,
int gridSizeZ,
48 int maxSmallProxies,
int maxLargeProxies,
int maxPairsPerBody,
54 m_bInitialized(false),
57 _initialize(worldAabbMin, worldAabbMax, gridSizeX, gridSizeY, gridSizeZ,
58 maxSmallProxies, maxLargeProxies, maxPairsPerBody,
59 maxBodiesPerCell, cellFactorAABB);
66 int gridSizeX,
int gridSizeY,
int gridSizeZ,
67 int maxSmallProxies,
int maxLargeProxies,
int maxPairsPerBody,
71 m_bInitialized(false),
74 _initialize(worldAabbMin, worldAabbMax, gridSizeX, gridSizeY, gridSizeZ,
75 maxSmallProxies, maxLargeProxies, maxPairsPerBody,
76 maxBodiesPerCell, cellFactorAABB);
91 int gridSizeX,
int gridSizeY,
int gridSizeZ,
92 int maxSmallProxies,
int maxLargeProxies,
int maxPairsPerBody,
106 btVector3 w_size = worldAabbMax - worldAabbMin;
237 unsigned int* pInp =
m_hPairOut + m_hPairScan[i];
240 for(
unsigned int j = 0; j < num; j++)
242 unsigned int indx1_s = pInp[j];
283 btAssert((aabbMin[0]<= aabbMax[0]) && (aabbMin[1]<= aabbMax[1]) && (aabbMin[2]<= aabbMax[2]));
355 int new_largest_index = -1;
363 new_largest_index = i;
423 int new_largest_index = -1;
424 unsigned int num_small = 0;
432 new_largest_index = i;
446 new_largest_index = -1;
447 unsigned int num_large = 0;
455 new_largest_index = i;
479 s3DGridBroadphaseParams = *hostParams;
496 class bt3DGridHashKey
501 void quickSort(bt3DGridHashKey* pData,
int lo,
int hi)
504 bt3DGridHashKey x = pData[(lo+hi)/2];
507 while(pData[i].hash > x.hash) i++;
508 while(x.hash > pData[j].hash) j--;
511 bt3DGridHashKey t = pData[i];
517 if(lo < j) pData->quickSort(pData, lo, j);
518 if(i < hi) pData->quickSort(pData, i, hi);
558 BT_PROFILE(
"bt3DGrid_computePairCacheChanges");
567 BT_PROFILE(
"bt3DGrid_scanOverlappingPairBuff");
581 BT_PROFILE(
"bt3DGrid_squeezeOverlappingPairBuff");