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_GEOMETRY_QUERY
00032 #define PX_PHYSICS_GEOMUTILS_PX_GEOMETRY_QUERY
00033
00040 #define PX_MAX_SWEEP_DISTANCE 1e8f
00041
00046 #include "common/PxPhysXCommonConfig.h"
00047 #include "PxQueryReport.h"
00048
00049 #if !PX_DOXYGEN
00050 namespace physx
00051 {
00052 #endif
00053
00054 class PxGeometry;
00055 struct PxSweepHit;
00056 struct PxRaycastHit;
00057
00058 class PxTriangle;
00059
00063 class PxGeometryQuery
00064 {
00065 public:
00066
00091 PX_PHYSX_COMMON_API static bool sweep(const PxVec3& unitDir,
00092 const PxReal maxDist,
00093 const PxGeometry& geom0,
00094 const PxTransform& pose0,
00095 const PxGeometry& geom1,
00096 const PxTransform& pose1,
00097 PxSweepHit& sweepHit,
00098 PxHitFlags hitFlags = PxHitFlag::eDEFAULT,
00099 const PxReal inflation = 0.f);
00100
00101
00118 PX_PHYSX_COMMON_API static bool overlap(const PxGeometry& geom0, const PxTransform& pose0,
00119 const PxGeometry& geom1, const PxTransform& pose1);
00120
00121
00137 PX_PHYSX_COMMON_API static PxU32 raycast(const PxVec3& origin,
00138 const PxVec3& unitDir,
00139 const PxGeometry& geom,
00140 const PxTransform& pose,
00141 PxReal maxDist,
00142 PxHitFlags hitFlags,
00143 PxU32 maxHits,
00144 PxRaycastHit* PX_RESTRICT rayHits);
00145
00176 PX_PHYSX_COMMON_API static bool computePenetration(PxVec3& direction, PxF32& depth,
00177 const PxGeometry& geom0, const PxTransform& pose0,
00178 const PxGeometry& geom1, const PxTransform& pose1);
00179
00193 PX_PHYSX_COMMON_API static PxReal pointDistance(const PxVec3& point, const PxGeometry& geom, const PxTransform& pose, PxVec3* closestPoint=NULL);
00194
00195
00206 PX_PHYSX_COMMON_API static PxBounds3 getWorldBounds(const PxGeometry& geom, const PxTransform& pose, float inflation=1.01f);
00207
00216 PX_PHYSX_COMMON_API static bool isValid(const PxGeometry& geom);
00217 };
00218
00219
00220 #if !PX_DOXYGEN
00221 }
00222 #endif
00223
00225 #endif