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_JOINT
00032 #define PX_PHYSICS_NX_ARTICULATION_JOINT
00033
00036 #include "PxPhysXConfig.h"
00037 #include "common/PxBase.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00057 struct PxArticulationJointDriveType
00058 {
00059 enum Enum
00060 {
00061 eTARGET = 0,
00062 eERROR = 1
00063 };
00064 };
00065
00066
00076 class PxArticulationJoint : public PxBase
00077 {
00078 public:
00079
00089 virtual void setParentPose(const PxTransform& pose) = 0;
00090
00099 virtual PxTransform getParentPose() const = 0;
00100
00101
00111 virtual void setChildPose(const PxTransform& pose) = 0;
00112
00120 virtual PxTransform getChildPose() const = 0;
00121
00122
00135 virtual void setTargetOrientation(const PxQuat& orientation) = 0;
00136
00144 virtual PxQuat getTargetOrientation() const = 0;
00145
00156 virtual void setTargetVelocity(const PxVec3& velocity) = 0;
00157
00165 virtual PxVec3 getTargetVelocity() const = 0;
00166
00167
00176 virtual void setDriveType(PxArticulationJointDriveType::Enum driveType) = 0;
00177
00185 virtual PxArticulationJointDriveType::Enum
00186 getDriveType() const = 0;
00187
00188
00202 virtual void setStiffness(PxReal spring) = 0;
00203
00211 virtual PxReal getStiffness() const = 0;
00212
00213
00227 virtual void setDamping(PxReal damping) = 0;
00228
00235 virtual PxReal getDamping() const = 0;
00236
00256 virtual void setInternalCompliance(PxReal compliance) = 0;
00257
00258
00266 virtual PxReal getInternalCompliance() const = 0;
00267
00287 virtual void setExternalCompliance(PxReal compliance) = 0;
00288
00296 virtual PxReal getExternalCompliance() const = 0;
00297
00298
00299
00313 virtual void setSwingLimit(PxReal zLimit, PxReal yLimit) = 0;
00314
00315
00326 virtual void getSwingLimit(PxReal& zLimit, PxReal& yLimit) const = 0;
00327
00328
00329
00336 virtual void setTangentialStiffness(PxReal spring) = 0;
00337
00338
00346 virtual PxReal getTangentialStiffness() const = 0;
00347
00348
00355 virtual void setTangentialDamping(PxReal damping) = 0;
00356
00357
00365 virtual PxReal getTangentialDamping() const = 0;
00366
00367
00379 virtual void setSwingLimitContactDistance(PxReal contactDistance) = 0;
00380
00381
00389 virtual PxReal getSwingLimitContactDistance() const = 0;
00390
00391
00392
00401 virtual void setSwingLimitEnabled(bool enabled) = 0;
00402
00411 virtual bool getSwingLimitEnabled() const = 0;
00412
00413
00426 virtual void setTwistLimit(PxReal lower, PxReal upper) = 0;
00427
00437 virtual void getTwistLimit(PxReal &lower, PxReal &upper) const = 0;
00438
00439
00448 virtual void setTwistLimitEnabled(bool enabled) = 0;
00449
00458 virtual bool getTwistLimitEnabled() const = 0;
00459
00460
00472 virtual void setTwistLimitContactDistance(PxReal contactDistance) = 0;
00473
00474
00482 virtual PxReal getTwistLimitContactDistance() const = 0;
00483
00484 virtual const char* getConcreteTypeName() const { return "PxArticulationJoint"; }
00485
00486 protected:
00487 PX_INLINE PxArticulationJoint(PxType concreteType, PxBaseFlags baseFlags) : PxBase(concreteType, baseFlags) {}
00488 PX_INLINE PxArticulationJoint(PxBaseFlags baseFlags) : PxBase(baseFlags) {}
00489 virtual ~PxArticulationJoint() {}
00490 virtual bool isKindOf(const char* name) const { return !::strcmp("PxArticulationJoint", name) || PxBase::isKindOf(name); }
00491 };
00492
00493 #if !PX_DOXYGEN
00494 }
00495 #endif
00496
00498 #endif