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_PX_PARTICLEBASE
00032 #define PX_PHYSICS_PX_PARTICLEBASE
00033
00040 #include "PxPhysXConfig.h"
00041 #include "foundation/PxBounds3.h"
00042 #include "PxFiltering.h"
00043 #include "particles/PxParticleBaseFlag.h"
00044 #include "PxActor.h"
00045 #include "particles/PxParticleCreationData.h"
00046 #include "particles/PxParticleReadData.h"
00047 #include "PxForceMode.h"
00048
00049 #if !PX_DOXYGEN
00050 namespace physx
00051 {
00052 #endif
00053
00069 class PX_DEPRECATED PxParticleBase : public PxActor
00070 {
00071
00072 public:
00073
00074
00075
00079
00092 virtual PxParticleReadData* lockParticleReadData(PxDataAccessFlags flags) = 0;
00093
00099 virtual PxParticleReadData* lockParticleReadData() = 0;
00100
00114 virtual bool createParticles(const PxParticleCreationData& creationData) = 0;
00115
00128 virtual void releaseParticles(PxU32 numParticles, const PxStrideIterator<const PxU32>& indexBuffer) = 0;
00129
00135 virtual void releaseParticles() = 0;
00136
00148 virtual void setPositions(PxU32 numParticles, const PxStrideIterator<const PxU32>& indexBuffer,
00149 const PxStrideIterator<const PxVec3>& positionBuffer) = 0;
00150
00162 virtual void setVelocities(PxU32 numParticles, const PxStrideIterator<const PxU32>& indexBuffer,
00163 const PxStrideIterator<const PxVec3>& velocityBuffer) = 0;
00164
00179 virtual void setRestOffsets(PxU32 numParticles, const PxStrideIterator<const PxU32>& indexBuffer,
00180 const PxStrideIterator<const PxF32>& restOffsetBuffer) = 0;
00181
00182
00193 virtual void addForces(PxU32 numParticles, const PxStrideIterator<const PxU32>& indexBuffer,
00194 const PxStrideIterator<const PxVec3>& forceBuffer, PxForceMode::Enum forceMode) = 0;
00195
00197
00198
00202
00208 virtual PxReal getDamping() const = 0;
00209
00215 virtual void setDamping(PxReal damp) = 0;
00216
00222 virtual PxVec3 getExternalAcceleration() const = 0;
00223
00231 virtual void setExternalAcceleration(const PxVec3&acceleration) = 0;
00232
00239 virtual void getProjectionPlane(PxVec3& normal, PxReal& distance) const = 0;
00240
00251 virtual void setProjectionPlane(const PxVec3& normal, PxReal distance) = 0;
00253
00254
00258
00264 virtual PxReal getParticleMass() const = 0;
00265
00271 virtual void setParticleMass(PxReal mass) = 0;
00272
00278 virtual PxReal getRestitution() const = 0;
00279
00287 virtual void setRestitution(PxReal rest) = 0;
00288
00294 virtual PxReal getDynamicFriction() const = 0;
00295
00303 virtual void setDynamicFriction(PxReal friction) = 0;
00304
00310 virtual PxReal getStaticFriction() const = 0;
00311
00319 virtual void setStaticFriction(PxReal friction) = 0;
00320
00322
00323
00327
00333 virtual void setSimulationFilterData(const PxFilterData& data) = 0;
00334
00340 virtual PxFilterData getSimulationFilterData() const = 0;
00341
00343
00344
00351 virtual void setParticleBaseFlag(PxParticleBaseFlag::Enum flag, bool val) = 0;
00352
00358 virtual PxParticleBaseFlags getParticleBaseFlags() const = 0;
00359
00360
00361
00365
00371 virtual PxU32 getMaxParticles() const = 0;
00372
00379 virtual PxReal getMaxMotionDistance() const = 0;
00380
00387 virtual void setMaxMotionDistance(PxReal distance) = 0;
00388
00394 virtual PxReal getRestOffset() const = 0;
00395
00402 virtual void setRestOffset(PxReal restOffset) = 0;
00403
00409 virtual PxReal getContactOffset() const = 0;
00410
00417 virtual void setContactOffset(PxReal contactOffset) = 0;
00418
00426 virtual PxReal getGridSize() const = 0;
00427
00435 virtual void setGridSize(PxReal gridSize) = 0;
00436
00442 virtual PxParticleReadDataFlags getParticleReadDataFlags() const = 0;
00443
00450 virtual void setParticleReadDataFlag(PxParticleReadDataFlag::Enum flag, bool val)= 0;
00451
00452 protected:
00453 PX_INLINE PxParticleBase(PxType concreteType, PxBaseFlags baseFlags) : PxActor(concreteType, baseFlags) {}
00454 PX_INLINE PxParticleBase(PxBaseFlags baseFlags) : PxActor(baseFlags) {}
00455 virtual ~PxParticleBase() {}
00456 virtual bool isKindOf(const char* name) const { return !::strcmp("PxParticleBase", name) || PxActor::isKindOf(name); }
00457
00459
00460 };
00461
00462 #if !PX_DOXYGEN
00463 }
00464 #endif
00465
00467 #endif