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_NX_ARTICULATION_BASE
00032 #define PX_PHYSICS_NX_ARTICULATION_BASE
00033
00036 #include "PxPhysXConfig.h"
00037 #include "common/PxBase.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00044
00045 class PxArticulationImpl;
00046
00057 class PxArticulationBase : public PxBase
00058 {
00059 public:
00060
00061 enum Enum
00062 {
00063 eReducedCoordinate = 0,
00064 eMaximumCoordinate = 1
00065 };
00066
00074 virtual PxScene* getScene() const = 0;
00075
00092 virtual void setSolverIterationCounts(PxU32 minPositionIters, PxU32 minVelocityIters = 1) = 0;
00093
00099 virtual void getSolverIterationCounts(PxU32 & minPositionIters, PxU32 & minVelocityIters) const = 0;
00100
00133 virtual bool isSleeping() const = 0;
00134
00144 virtual void setSleepThreshold(PxReal threshold) = 0;
00145
00153 virtual PxReal getSleepThreshold() const = 0;
00154
00168 virtual void setStabilizationThreshold(PxReal threshold) = 0;
00169
00179 virtual PxReal getStabilizationThreshold() const = 0;
00180
00196 virtual void setWakeCounter(PxReal wakeCounterValue) = 0;
00197
00205 virtual PxReal getWakeCounter() const = 0;
00206
00218 virtual void wakeUp() = 0;
00219
00231 virtual void putToSleep() = 0;
00232
00245 virtual PxArticulationLink* createLink(PxArticulationLink* parent, const PxTransform& pose) = 0;
00246
00247
00252 virtual PxU32 getNbLinks() const = 0;
00253
00267 virtual PxU32 getLinks(PxArticulationLink** userBuffer, PxU32 bufferSize, PxU32 startIndex = 0) const = 0;
00268
00269
00280 virtual void setName(const char* name) = 0;
00281
00289 virtual const char* getName() const = 0;
00290
00300 virtual PxBounds3 getWorldBounds(float inflation = 1.01f) const = 0;
00301
00309 virtual PxAggregate* getAggregate() const = 0;
00310
00311 virtual PxArticulationImpl* getImpl() = 0;
00312
00313 virtual const PxArticulationImpl* getImpl() const = 0;
00314
00315 virtual PxArticulationBase::Enum getType() const = 0;
00316
00317 void* userData;
00318
00319 virtual ~PxArticulationBase() {}
00320
00321 protected:
00322 PX_INLINE PxArticulationBase(PxType concreteType, PxBaseFlags baseFlags) : PxBase(concreteType, baseFlags) {}
00323 PX_INLINE PxArticulationBase(PxBaseFlags baseFlags) : PxBase(baseFlags) {}
00324 public:
00325 virtual PxArticulationJointBase* createArticulationJoint(PxArticulationLink& parent,
00326 const PxTransform& parentFrame,
00327 PxArticulationLink& child,
00328 const PxTransform& childFrame) = 0;
00329 virtual void releaseArticulationJoint(PxArticulationJointBase* joint) = 0;
00330 };
00331
00332 #if !PX_DOXYGEN
00333 }
00334 #endif
00335
00337 #endif