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_RIGIDDYNAMIC
00032 #define PX_PHYSICS_NX_RIGIDDYNAMIC
00033
00037 #include "PxRigidBody.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00044
00050 struct PxRigidDynamicLockFlag
00051 {
00052 enum Enum
00053 {
00054 eLOCK_LINEAR_X = (1 << 0),
00055 eLOCK_LINEAR_Y = (1 << 1),
00056 eLOCK_LINEAR_Z = (1 << 2),
00057 eLOCK_ANGULAR_X = (1 << 3),
00058 eLOCK_ANGULAR_Y = (1 << 4),
00059 eLOCK_ANGULAR_Z = (1 << 5)
00060 };
00061 };
00062
00063 typedef PxFlags<PxRigidDynamicLockFlag::Enum, PxU16> PxRigidDynamicLockFlags;
00064 PX_FLAGS_OPERATORS(PxRigidDynamicLockFlag::Enum, PxU16)
00065
00066
00084 class PxRigidDynamic : public PxRigidBody
00085 {
00086 public:
00087
00088
00089
00090
00118 virtual void setKinematicTarget(const PxTransform& destination) = 0;
00119
00128 virtual bool getKinematicTarget(PxTransform& target) const = 0;
00129
00130
00145 virtual void setLinearDamping(PxReal linDamp) = 0;
00146
00154 virtual PxReal getLinearDamping() const = 0;
00155
00169 virtual void setAngularDamping(PxReal angDamp) = 0;
00170
00178 virtual PxReal getAngularDamping() const = 0;
00179
00180
00202 virtual void setMaxAngularVelocity(PxReal maxAngVel) = 0;
00203
00211 virtual PxReal getMaxAngularVelocity() const = 0;
00212
00213
00251 virtual bool isSleeping() const = 0;
00252
00253
00265 virtual void setSleepThreshold(PxReal threshold) = 0;
00266
00274 virtual PxReal getSleepThreshold() const = 0;
00275
00289 virtual void setStabilizationThreshold(PxReal threshold) = 0;
00290
00300 virtual PxReal getStabilizationThreshold() const = 0;
00301
00302
00312 virtual PxRigidDynamicLockFlags getRigidDynamicLockFlags() const = 0;
00313
00327 virtual void setRigidDynamicLockFlag(PxRigidDynamicLockFlag::Enum flag, bool value) = 0;
00328 virtual void setRigidDynamicLockFlags(PxRigidDynamicLockFlags flags) = 0;
00329
00330
00331
00352 virtual void setWakeCounter(PxReal wakeCounterValue) = 0;
00353
00361 virtual PxReal getWakeCounter() const = 0;
00362
00377 virtual void wakeUp() = 0;
00378
00393 virtual void putToSleep() = 0;
00394
00395
00396
00415 virtual void setSolverIterationCounts(PxU32 minPositionIters, PxU32 minVelocityIters = 1) = 0;
00416
00422 virtual void getSolverIterationCounts(PxU32& minPositionIters, PxU32& minVelocityIters) const = 0;
00423
00443 virtual PxReal getContactReportThreshold() const = 0;
00444
00454 virtual void setContactReportThreshold(PxReal threshold) = 0;
00455
00456 virtual const char* getConcreteTypeName() const { return "PxRigidDynamic"; }
00457
00458 protected:
00459 PX_INLINE PxRigidDynamic(PxType concreteType, PxBaseFlags baseFlags) : PxRigidBody(concreteType, baseFlags) {}
00460 PX_INLINE PxRigidDynamic(PxBaseFlags baseFlags) : PxRigidBody(baseFlags) {}
00461 virtual ~PxRigidDynamic() {}
00462 virtual bool isKindOf(const char* name) const { return !::strcmp("PxRigidDynamic", name) || PxRigidBody::isKindOf(name); }
00463
00464 };
00465
00466 #if !PX_DOXYGEN
00467 }
00468 #endif
00469
00471 #endif