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
00083 class PxRigidDynamic : public PxRigidBody
00084 {
00085 public:
00086
00087
00088
00089
00117 virtual void setKinematicTarget(const PxTransform& destination) = 0;
00118
00127 virtual bool getKinematicTarget(PxTransform& target) const = 0;
00128
00129
00144 virtual void setLinearDamping(PxReal linDamp) = 0;
00145
00153 virtual PxReal getLinearDamping() const = 0;
00154
00168 virtual void setAngularDamping(PxReal angDamp) = 0;
00169
00177 virtual PxReal getAngularDamping() const = 0;
00178
00179
00201 virtual void setMaxAngularVelocity(PxReal maxAngVel) = 0;
00202
00210 virtual PxReal getMaxAngularVelocity() const = 0;
00211
00212
00250 virtual bool isSleeping() const = 0;
00251
00252
00264 virtual void setSleepThreshold(PxReal threshold) = 0;
00265
00273 virtual PxReal getSleepThreshold() const = 0;
00274
00288 virtual void setStabilizationThreshold(PxReal threshold) = 0;
00289
00299 virtual PxReal getStabilizationThreshold() const = 0;
00300
00301
00311 virtual PxRigidDynamicLockFlags getRigidDynamicLockFlags() const = 0;
00312
00326 virtual void setRigidDynamicLockFlag(PxRigidDynamicLockFlag::Enum flag, bool value) = 0;
00327 virtual void setRigidDynamicLockFlags(PxRigidDynamicLockFlags flags) = 0;
00328
00329
00330
00351 virtual void setWakeCounter(PxReal wakeCounterValue) = 0;
00352
00360 virtual PxReal getWakeCounter() const = 0;
00361
00376 virtual void wakeUp() = 0;
00377
00392 virtual void putToSleep() = 0;
00393
00394
00395
00414 virtual void setSolverIterationCounts(PxU32 minPositionIters, PxU32 minVelocityIters = 1) = 0;
00415
00421 virtual void getSolverIterationCounts(PxU32& minPositionIters, PxU32& minVelocityIters) const = 0;
00422
00442 virtual PxReal getContactReportThreshold() const = 0;
00443
00453 virtual void setContactReportThreshold(PxReal threshold) = 0;
00454
00455 virtual const char* getConcreteTypeName() const { return "PxRigidDynamic"; }
00456
00457 protected:
00458 PX_INLINE PxRigidDynamic(PxType concreteType, PxBaseFlags baseFlags) : PxRigidBody(concreteType, baseFlags) {}
00459 PX_INLINE PxRigidDynamic(PxBaseFlags baseFlags) : PxRigidBody(baseFlags) {}
00460 virtual ~PxRigidDynamic() {}
00461 virtual bool isKindOf(const char* name) const { return !::strcmp("PxRigidDynamic", name) || PxRigidBody::isKindOf(name); }
00462
00463 };
00464
00465 #if !PX_DOXYGEN
00466 }
00467 #endif
00468
00470 #endif