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_EXTENSIONS_SCENE_QUERY_H
00032 #define PX_PHYSICS_EXTENSIONS_SCENE_QUERY_H
00033
00037 #include "PxPhysXConfig.h"
00038
00039 #include "PxScene.h"
00040
00041 #if !PX_DOXYGEN
00042 namespace physx
00043 {
00044 #endif
00045
00046
00047 typedef PxQueryHit PxSceneQueryHit;
00048 typedef PxQueryFilterData PxSceneQueryFilterData;
00049 typedef PxQueryFilterCallback PxSceneQueryFilterCallback;
00050 typedef PxQueryCache PxSceneQueryCache;
00051 typedef PxHitFlag PxSceneQueryFlag;
00052 typedef PxHitFlags PxSceneQueryFlags;
00053
00062 class PxSceneQueryExt
00063 {
00064 public:
00065
00087 static bool raycastAny( const PxScene& scene,
00088 const PxVec3& origin, const PxVec3& unitDir, const PxReal distance,
00089 PxSceneQueryHit& hit, const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00090 PxSceneQueryFilterCallback* filterCall = NULL, const PxSceneQueryCache* cache = NULL);
00091
00114 static bool raycastSingle( const PxScene& scene,
00115 const PxVec3& origin, const PxVec3& unitDir, const PxReal distance,
00116 PxSceneQueryFlags outputFlags, PxRaycastHit& hit,
00117 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00118 PxSceneQueryFilterCallback* filterCall = NULL, const PxSceneQueryCache* cache = NULL);
00119
00147 static PxI32 raycastMultiple( const PxScene& scene,
00148 const PxVec3& origin, const PxVec3& unitDir, const PxReal distance,
00149 PxSceneQueryFlags outputFlags,
00150 PxRaycastHit* hitBuffer, PxU32 hitBufferSize, bool& blockingHit,
00151 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00152 PxSceneQueryFilterCallback* filterCall = NULL, const PxSceneQueryCache* cache = NULL);
00153
00178 static bool sweepAny( const PxScene& scene,
00179 const PxGeometry& geometry, const PxTransform& pose, const PxVec3& unitDir, const PxReal distance,
00180 PxSceneQueryFlags queryFlags,
00181 PxSceneQueryHit& hit,
00182 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00183 PxSceneQueryFilterCallback* filterCall = NULL,
00184 const PxSceneQueryCache* cache = NULL,
00185 PxReal inflation = 0.0f);
00186
00211 static bool sweepSingle(const PxScene& scene,
00212 const PxGeometry& geometry, const PxTransform& pose, const PxVec3& unitDir, const PxReal distance,
00213 PxSceneQueryFlags outputFlags,
00214 PxSweepHit& hit,
00215 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00216 PxSceneQueryFilterCallback* filterCall = NULL,
00217 const PxSceneQueryCache* cache = NULL,
00218 PxReal inflation=0.0f);
00219
00249 static PxI32 sweepMultiple( const PxScene& scene,
00250 const PxGeometry& geometry, const PxTransform& pose, const PxVec3& unitDir, const PxReal distance,
00251 PxSceneQueryFlags outputFlags, PxSweepHit* hitBuffer, PxU32 hitBufferSize, bool& blockingHit,
00252 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00253 PxSceneQueryFilterCallback* filterCall = NULL, const PxSceneQueryCache* cache = NULL,
00254 PxReal inflation = 0.0f);
00255
00274 static PxI32 overlapMultiple( const PxScene& scene,
00275 const PxGeometry& geometry, const PxTransform& pose,
00276 PxOverlapHit* hitBuffer, PxU32 hitBufferSize,
00277 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00278 PxSceneQueryFilterCallback* filterCall = NULL);
00279
00297 static bool overlapAny( const PxScene& scene,
00298 const PxGeometry& geometry, const PxTransform& pose,
00299 PxOverlapHit& hit,
00300 const PxSceneQueryFilterData& filterData = PxSceneQueryFilterData(),
00301 PxSceneQueryFilterCallback* filterCall = NULL);
00302 };
00303
00304 #if !PX_DOXYGEN
00305 }
00306 #endif
00307
00309 #endif