| 1416 | } |
| 1417 | |
| 1418 | void NpScene::visualize() |
| 1419 | { |
| 1420 | NP_READ_CHECK(this); |
| 1421 | |
| 1422 | PX_PROFILE_ZONE("NpScene::visualize", getContextId()); |
| 1423 | |
| 1424 | mRenderBuffer.clear(); // clear last frame visualizations |
| 1425 | |
| 1426 | #if PX_ENABLE_DEBUG_VISUALIZATION |
| 1427 | if(getVisualizationParameter(PxVisualizationParameter::eSCALE) == 0.0f) |
| 1428 | return; |
| 1429 | |
| 1430 | Cm::RenderOutput out(mRenderBuffer); |
| 1431 | |
| 1432 | // Visualize scene axis |
| 1433 | const PxReal worldAxes = getVisualizationParameter(PxVisualizationParameter::eWORLD_AXES); |
| 1434 | if (worldAxes != 0) |
| 1435 | out << Cm::DebugBasis(PxVec3(worldAxes)); |
| 1436 | |
| 1437 | // Visualize articulations |
| 1438 | for(PxU32 i=0;i<mArticulations.size();i++) |
| 1439 | static_cast<NpArticulation *>(mArticulations.getEntries()[i])->visualize(out, this); |
| 1440 | |
| 1441 | // Visualize rigid actors and rigid bodies |
| 1442 | PxRigidActor*const* rigidActors = mRigidActors.begin(); |
| 1443 | const PxU32 rigidActorCount = mRigidActors.size(); |
| 1444 | |
| 1445 | for(PxU32 i=0; i < rigidActorCount; i++) |
| 1446 | { |
| 1447 | PxRigidActor* a = rigidActors[i]; |
| 1448 | if (a->getType() == PxActorType::eRIGID_DYNAMIC) |
| 1449 | static_cast<NpRigidDynamic*>(a)->visualize(out, this); |
| 1450 | else |
| 1451 | static_cast<NpRigidStatic*>(a)->visualize(out, this); |
| 1452 | } |
| 1453 | |
| 1454 | // Visualize pruning structures |
| 1455 | const bool visStatic = getVisualizationParameter(PxVisualizationParameter::eCOLLISION_STATIC) != 0.0f; |
| 1456 | const bool visDynamic = getVisualizationParameter(PxVisualizationParameter::eCOLLISION_DYNAMIC) != 0.0f; |
| 1457 | //flushQueryUpdates(); // DE7834 |
| 1458 | if(visStatic && mSQManager.get(PruningIndex::eSTATIC).pruner()) |
| 1459 | mSQManager.get(PruningIndex::eSTATIC).pruner()->visualize(out, PxU32(PxDebugColor::eARGB_BLUE)); |
| 1460 | if(visDynamic && mSQManager.get(PruningIndex::eDYNAMIC).pruner()) |
| 1461 | mSQManager.get(PruningIndex::eDYNAMIC).pruner()->visualize(out, PxU32(PxDebugColor::eARGB_RED)); |
| 1462 | |
| 1463 | if(getVisualizationParameter(PxVisualizationParameter::eMBP_REGIONS) != 0.0f) |
| 1464 | { |
| 1465 | out << PxTransform(PxIdentity); |
| 1466 | |
| 1467 | const PxU32 nbRegions = mScene.getNbBroadPhaseRegions(); |
| 1468 | for(PxU32 i=0;i<nbRegions;i++) |
| 1469 | { |
| 1470 | PxBroadPhaseRegionInfo info; |
| 1471 | mScene.getBroadPhaseRegions(&info, 1, i); |
| 1472 | |
| 1473 | if(info.active) |
| 1474 | out << PxU32(PxDebugColor::eARGB_YELLOW); |
| 1475 | else |
no test coverage detected