| 102 | } // namespace |
| 103 | |
| 104 | void physx::PxMeshQuery::getTriangle(const PxTriangleMeshGeometry& triGeom, const PxTransform& globalPose, PxTriangleID triangleIndex, PxTriangle& triangle, PxU32* vertexIndices, PxU32* adjacencyIndices) |
| 105 | { |
| 106 | TriangleMesh* tm = static_cast<TriangleMesh*>(triGeom.triangleMesh); |
| 107 | |
| 108 | PX_CHECK_AND_RETURN(triangleIndex<tm->getNbTriangles(), "PxMeshQuery::getTriangle: triangle index is out of bounds"); |
| 109 | |
| 110 | if(adjacencyIndices && !tm->getAdjacencies()) |
| 111 | Ps::getFoundation().error(PxErrorCode::eINVALID_OPERATION, __FILE__, __LINE__, "Adjacency information not created. Set buildTriangleAdjacencies on Cooking params."); |
| 112 | |
| 113 | const Cm::Matrix34 vertex2worldSkew = globalPose * triGeom.scale; |
| 114 | tm->computeWorldTriangle(triangle, triangleIndex, vertex2worldSkew, triGeom.scale.hasNegativeDeterminant(), vertexIndices, adjacencyIndices); |
| 115 | } |
| 116 | |
| 117 | /////////////////////////////////////////////////////////////////////////////// |
| 118 | |