00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef PX_PHYSICS_GEOMUTILS_PX_MESH_QUERY
00032 #define PX_PHYSICS_GEOMUTILS_PX_MESH_QUERY
00033
00038 #include "common/PxPhysXCommonConfig.h"
00039 #include "PxQueryReport.h"
00040
00041 #if !PX_DOXYGEN
00042 namespace physx
00043 {
00044 #endif
00045
00046 class PxGeometry;
00047 class PxConvexMeshGeometry;
00048 class PxTriangleMeshGeometry;
00049 class PxHeightFieldGeometry;
00050
00051 class PxTriangle;
00052
00053 class PxMeshQuery
00054 {
00055 public:
00056
00073 PX_PHYSX_COMMON_API static void getTriangle(const PxTriangleMeshGeometry& triGeom, const PxTransform& transform, PxTriangleID triangleIndex, PxTriangle& triangle, PxU32* vertexIndices=NULL, PxU32* adjacencyIndices=NULL);
00074
00075
00092 PX_PHYSX_COMMON_API static void getTriangle(const PxHeightFieldGeometry& hfGeom, const PxTransform& transform, PxTriangleID triangleIndex, PxTriangle& triangle, PxU32* vertexIndices=NULL, PxU32* adjacencyIndices=NULL);
00093
00094
00112 PX_PHYSX_COMMON_API static PxU32 findOverlapTriangleMesh( const PxGeometry& geom, const PxTransform& geomPose,
00113 const PxTriangleMeshGeometry& meshGeom, const PxTransform& meshPose,
00114 PxU32* results, PxU32 maxResults, PxU32 startIndex, bool& overflow);
00115
00133 PX_PHYSX_COMMON_API static PxU32 findOverlapHeightField(const PxGeometry& geom, const PxTransform& geomPose,
00134 const PxHeightFieldGeometry& hfGeom, const PxTransform& hfPose,
00135 PxU32* results, PxU32 maxResults, PxU32 startIndex, bool& overflow);
00136
00137
00170 PX_PHYSX_COMMON_API static bool sweep(const PxVec3& unitDir,
00171 const PxReal distance,
00172 const PxGeometry& geom,
00173 const PxTransform& pose,
00174 PxU32 triangleCount,
00175 const PxTriangle* triangles,
00176 PxSweepHit& sweepHit,
00177 PxHitFlags hitFlags = PxHitFlag::eDEFAULT,
00178 const PxU32* cachedIndex = NULL,
00179 const PxReal inflation = 0.0f,
00180 bool doubleSided = false);
00181 };
00182
00183
00184 #if !PX_DOXYGEN
00185 }
00186 #endif
00187
00189 #endif