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_PRISMATICJOINT_H
00032 #define PX_PRISMATICJOINT_H
00033
00037 #include "extensions/PxJoint.h"
00038 #include "extensions/PxJointLimit.h"
00039
00040 #if !PX_DOXYGEN
00041 namespace physx
00042 {
00043 #endif
00044
00045 class PxPrismaticJoint;
00046
00059 PxPrismaticJoint* PxPrismaticJointCreate(PxPhysics& physics,
00060 PxRigidActor* actor0, const PxTransform& localFrame0,
00061 PxRigidActor* actor1, const PxTransform& localFrame1);
00062
00063
00070 struct PxPrismaticJointFlag
00071 {
00072 enum Enum
00073 {
00074 eLIMIT_ENABLED = 1<<1
00075 };
00076 };
00077
00078 typedef PxFlags<PxPrismaticJointFlag::Enum, PxU16> PxPrismaticJointFlags;
00079 PX_FLAGS_OPERATORS(PxPrismaticJointFlag::Enum, PxU16)
00080
00081
00082
00094 class PxPrismaticJoint : public PxJoint
00095 {
00096 public:
00097
00098
00103 virtual PxReal getPosition() const = 0;
00104
00108 virtual PxReal getVelocity() const = 0;
00109
00118 virtual void setLimit(const PxJointLinearLimitPair&) = 0;
00119
00125 virtual PxJointLinearLimitPair getLimit() const = 0;
00126
00127
00138 virtual void setPrismaticJointFlags(PxPrismaticJointFlags flags) = 0;
00139
00149 virtual void setPrismaticJointFlag(PxPrismaticJointFlag::Enum flag, bool value) = 0;
00150
00159 virtual PxPrismaticJointFlags getPrismaticJointFlags(void) const = 0;
00160
00180 virtual void setProjectionLinearTolerance(PxReal tolerance) = 0;
00181
00190 virtual PxReal getProjectionLinearTolerance() const = 0;
00191
00211 virtual void setProjectionAngularTolerance(PxReal tolerance) = 0;
00212
00218 virtual PxReal getProjectionAngularTolerance() const = 0;
00219
00223 virtual const char* getConcreteTypeName() const { return "PxPrismaticJoint"; }
00224
00225 protected:
00226
00227
00231 PX_INLINE PxPrismaticJoint(PxType concreteType, PxBaseFlags baseFlags) : PxJoint(concreteType, baseFlags) {}
00232
00236 PX_INLINE PxPrismaticJoint(PxBaseFlags baseFlags) : PxJoint(baseFlags) {}
00237
00241 virtual bool isKindOf(const char* name) const { return !::strcmp("PxPrismaticJoint", name) || PxJoint::isKindOf(name); }
00242
00243
00244 };
00245
00246 #if !PX_DOXYGEN
00247 }
00248 #endif
00249
00251 #endif