| 701 | } |
| 702 | |
| 703 | static void visualize(const PxGeometry& geometry, RenderOutput& out, const PxTransform& absPose, const PxBounds3& cullbox, const PxReal fscale, bool visualizeShapes, bool visualizeEdges, bool useCullBox) |
| 704 | { |
| 705 | // triangle meshes can render active edges or face normals, but for other types we can just early out if there are no collision shapes |
| 706 | if(!visualizeShapes && geometry.getType() != PxGeometryType::eTRIANGLEMESH) |
| 707 | return; |
| 708 | |
| 709 | switch(geometry.getType()) |
| 710 | { |
| 711 | case PxGeometryType::eSPHERE: |
| 712 | visualizeSphere(static_cast<const PxSphereGeometry&>(geometry), out, absPose); |
| 713 | break; |
| 714 | case PxGeometryType::eBOX: |
| 715 | visualizeBox(static_cast<const PxBoxGeometry&>(geometry), out, absPose); |
| 716 | break; |
| 717 | case PxGeometryType::ePLANE: |
| 718 | visualizePlane(static_cast<const PxPlaneGeometry&>(geometry), out, absPose); |
| 719 | break; |
| 720 | case PxGeometryType::eCAPSULE: |
| 721 | visualizeCapsule(static_cast<const PxCapsuleGeometry&>(geometry), out, absPose); |
| 722 | break; |
| 723 | case PxGeometryType::eCONVEXMESH: |
| 724 | visualizeConvexMesh(static_cast<const PxConvexMeshGeometry&>(geometry), out, absPose); |
| 725 | break; |
| 726 | case PxGeometryType::eTRIANGLEMESH: |
| 727 | visualizeTriangleMesh(static_cast<const PxTriangleMeshGeometry&>(geometry), out, absPose, cullbox, fscale, visualizeShapes, visualizeEdges, useCullBox); |
| 728 | break; |
| 729 | case PxGeometryType::eHEIGHTFIELD: |
| 730 | visualizeHeightField(static_cast<const PxHeightFieldGeometry&>(geometry), out, absPose, cullbox, useCullBox); |
| 731 | break; |
| 732 | case PxGeometryType::eINVALID: |
| 733 | break; |
| 734 | case PxGeometryType::eGEOMETRY_COUNT: |
| 735 | break; |
| 736 | } |
| 737 | } |
| 738 | |
| 739 | void NpShapeManager::visualize(RenderOutput& out, NpScene* scene, const PxRigidActor& actor) |
| 740 | { |
no test coverage detected