| 2255 | } |
| 2256 | |
| 2257 | void AABBManager::postBpStage2(PxBaseTask* continuation, Cm::FlushPool& flushPool) |
| 2258 | { |
| 2259 | { |
| 2260 | const PxU32 size = mDirtyAggregates.size(); |
| 2261 | for (PxU32 i = 0; i < size; i += ProcessSelfCollisionPairsParallel::MaxPairs) |
| 2262 | { |
| 2263 | const PxU32 nbToProcess = PxMin(size - i, ProcessSelfCollisionPairsParallel::MaxPairs); |
| 2264 | |
| 2265 | ProcessSelfCollisionPairsParallel* task = PX_PLACEMENT_NEW(flushPool.allocate(sizeof(ProcessSelfCollisionPairsParallel)), ProcessSelfCollisionPairsParallel) |
| 2266 | (mContextID, &mDirtyAggregates[i], nbToProcess, this); |
| 2267 | if (continuation) |
| 2268 | { |
| 2269 | task->setContinuation(continuation); |
| 2270 | task->removeReference(); |
| 2271 | } |
| 2272 | else |
| 2273 | task->runInternal(); |
| 2274 | mAggPairTasks.pushBack(task); |
| 2275 | } |
| 2276 | } |
| 2277 | |
| 2278 | { |
| 2279 | if (continuation) |
| 2280 | processAggregatePairsParallel(mAggregateAggregatePairs, *this, flushPool, continuation, "AggAggPairs", mAggPairTasks); |
| 2281 | else |
| 2282 | processAggregatePairs(mAggregateAggregatePairs, *this); |
| 2283 | } |
| 2284 | |
| 2285 | |
| 2286 | |
| 2287 | { |
| 2288 | if (continuation) |
| 2289 | processAggregatePairsParallel(mActorAggregatePairs, *this, flushPool, continuation, "AggActorPairs", mAggPairTasks); |
| 2290 | else |
| 2291 | processAggregatePairs(mActorAggregatePairs, *this); |
| 2292 | } |
| 2293 | |
| 2294 | |
| 2295 | } |
| 2296 | |
| 2297 | void AABBManager::postBpStage3(PxBaseTask*) |
| 2298 | { |
no test coverage detected