Go to the documentation of this file.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 MODULE_FIELD_SAMPLER_H
00031 #define MODULE_FIELD_SAMPLER_H
00032
00033 #include "Apex.h"
00034
00035 namespace nvidia
00036 {
00037 namespace apex
00038 {
00039
00040 PX_PUSH_PACK_DEFAULT
00041
00048 class FieldSamplerWeightedCollisionFilterCallback
00049 {
00050 public:
00057 virtual bool fieldSamplerWeightedCollisionFilter(const physx::PxFilterData &objectA,const physx::PxFilterData &objectB,float &multiplierValue) = 0;
00058 };
00059
00060
00064 class ModuleFieldSampler : public Module
00065 {
00066 protected:
00067 virtual ~ModuleFieldSampler() {}
00068
00069 public:
00070
00074 virtual bool setFieldSamplerWeightedCollisionFilterCallback(const Scene& apexScene,FieldSamplerWeightedCollisionFilterCallback *callback) = 0;
00075
00076
00077 #if PX_PHYSICS_VERSION_MAJOR == 3
00078
00081 virtual void enablePhysXMonitor(const Scene& apexScene, bool enable) = 0;
00088 virtual void setPhysXMonitorFilterData(const Scene& apexScene, physx::PxFilterData filterData) = 0;
00089 #endif
00090
00099 virtual uint32_t createForceSampleBatch(const Scene& apexScene, uint32_t maxCount, const physx::PxFilterData filterData) = 0;
00100
00107 virtual void releaseForceSampleBatch(const Scene& apexScene, uint32_t batchId) = 0;
00108
00125 virtual void submitForceSampleBatch( const Scene& apexScene, uint32_t batchId,
00126 PxVec4* forces, const uint32_t forcesStride,
00127 const PxVec3* positions, const uint32_t positionsStride,
00128 const PxVec3* velocities, const uint32_t velocitiesStride,
00129 const float* mass, const uint32_t massStride,
00130 const uint32_t* indices, const uint32_t numIndices) = 0;
00131
00132 };
00133
00134
00135
00136 PX_POP_PACK
00137
00138 }
00139 }
00140
00141 #endif // MODULE_FIELD_SAMPLER_H