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