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 #ifndef PX_REVOLUTEJOINT_H
00031 #define PX_REVOLUTEJOINT_H
00032
00036 #include "extensions/PxJoint.h"
00037 #include "extensions/PxJointLimit.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00044 class PxRevoluteJoint;
00045
00057 PxRevoluteJoint* PxRevoluteJointCreate(PxPhysics& physics, PxRigidActor* actor0, const PxTransform& localFrame0, PxRigidActor* actor1, const PxTransform& localFrame1);
00058
00064 struct PxRevoluteJointFlag
00065 {
00066 enum Enum
00067 {
00068 eLIMIT_ENABLED = 1<<0,
00069 eDRIVE_ENABLED = 1<<1,
00070 eDRIVE_FREESPIN = 1<<2
00071 };
00072 };
00073
00074 typedef PxFlags<PxRevoluteJointFlag::Enum, PxU16> PxRevoluteJointFlags;
00075 PX_FLAGS_OPERATORS(PxRevoluteJointFlag::Enum, PxU16)
00076
00077
00099 class PxRevoluteJoint : public PxJoint
00100 {
00101 public:
00102
00106 virtual PxReal getAngle() const = 0;
00107
00111 virtual PxReal getVelocity() const = 0;
00112
00124 virtual void setLimit(const PxJointAngularLimitPair& limits) = 0;
00125
00133 virtual PxJointAngularLimitPair getLimit() const = 0;
00134
00154 virtual void setDriveVelocity(PxReal velocity, bool autowake = true) = 0;
00155
00163 virtual PxReal getDriveVelocity() const = 0;
00164
00177 virtual void setDriveForceLimit(PxReal limit) = 0;
00178
00186 virtual PxReal getDriveForceLimit() const = 0;
00187
00201 virtual void setDriveGearRatio(PxReal ratio) = 0;
00202
00210 virtual PxReal getDriveGearRatio() const = 0;
00211
00221 virtual void setRevoluteJointFlags(PxRevoluteJointFlags flags) = 0;
00222
00231 virtual void setRevoluteJointFlag(PxRevoluteJointFlag::Enum flag, bool value) = 0;
00232
00240 virtual PxRevoluteJointFlags getRevoluteJointFlags() const = 0;
00241
00260 virtual void setProjectionLinearTolerance(PxReal tolerance) = 0;
00261
00269 virtual PxReal getProjectionLinearTolerance() const = 0;
00270
00289 virtual void setProjectionAngularTolerance(PxReal tolerance) = 0;
00290
00298 virtual PxReal getProjectionAngularTolerance() const = 0;
00299
00303 virtual const char* getConcreteTypeName() const { return "PxRevoluteJoint"; }
00304
00305 protected:
00306
00307
00308
00312 PX_INLINE PxRevoluteJoint(PxType concreteType, PxBaseFlags baseFlags) : PxJoint(concreteType, baseFlags) {}
00313
00317 PX_INLINE PxRevoluteJoint(PxBaseFlags baseFlags) : PxJoint(baseFlags) {}
00318
00322 virtual bool isKindOf(const char* name) const { return !::strcmp("PxRevoluteJoint", name) || PxJoint::isKindOf(name); }
00323
00324
00325 };
00326
00327 #if !PX_DOXYGEN
00328 }
00329 #endif
00330
00332 #endif