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 #ifndef PX_PHYSICS_NX_VOLUMECACHE
00031 #define PX_PHYSICS_NX_VOLUMECACHE
00032
00036 #include "PxScene.h"
00037 #include "geometry/PxGeometryHelpers.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00053 class PX_DEPRECATED PxVolumeCache
00054 {
00055 public:
00063 struct Iterator
00064 {
00073 virtual void processShapes(PxU32 count, const PxActorShape* actorShapePairs) = 0;
00074
00080 virtual void finalizeQuery() {}
00081 protected:
00082 virtual ~Iterator() {}
00083 };
00084
00085
00091 enum FillStatus
00092 {
00097 FILL_OK,
00098
00107 FILL_OVER_MAX_COUNT,
00108
00115 FILL_UNSUPPORTED_GEOMETRY_TYPE,
00116
00121 FILL_OUT_OF_MEMORY
00122 };
00123
00134 virtual FillStatus fill(const PxGeometry& cacheVolume, const PxTransform& pose) = 0;
00135
00143 virtual bool isValid() const = 0;
00144
00151 virtual void invalidate() = 0;
00152
00160 virtual bool getCacheVolume(PxGeometryHolder& resultVolume, PxTransform& resultPose) = 0;
00161
00167 virtual PxI32 getNbCachedShapes() = 0;
00168
00174 virtual void release() = 0;
00175
00185 virtual void forEach(Iterator& iter) = 0;
00186
00194 virtual void setMaxNbStaticShapes(PxU32 maxCount) = 0;
00195
00203 virtual void setMaxNbDynamicShapes(PxU32 maxCount) = 0;
00204
00210 virtual PxU32 getMaxNbStaticShapes() = 0;
00211
00217 virtual PxU32 getMaxNbDynamicShapes() = 0;
00218
00238 virtual bool raycast(
00239 const PxVec3& origin, const PxVec3& unitDir, const PxReal distance,
00240 PxRaycastCallback& hitCall, PxHitFlags hitFlags = PxHitFlags(PxHitFlag::eDEFAULT),
00241 const PxQueryFilterData& filterData = PxQueryFilterData(), PxQueryFilterCallback* filterCall = NULL) const = 0;
00242
00262 virtual bool sweep(
00263 const PxGeometry& geometry, const PxTransform& pose, const PxVec3& unitDir, const PxReal distance,
00264 PxSweepCallback& hitCall, PxHitFlags hitFlags = PxHitFlag::eDEFAULT,
00265 const PxQueryFilterData& filterData = PxQueryFilterData(), PxQueryFilterCallback* filterCall = NULL,
00266 const PxReal inflation = 0.f) const = 0;
00267
00268
00283 virtual bool overlap(
00284 const PxGeometry& geometry, const PxTransform& pose, PxOverlapCallback& hitCall,
00285 const PxQueryFilterData& filterData = PxQueryFilterData(), PxQueryFilterCallback* filterCall = NULL) const = 0;
00286
00287 protected:
00288 virtual ~PxVolumeCache() {}
00289 };
00290
00291 #if !PX_DOXYGEN
00292 }
00293 #endif
00294
00296 #endif