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_DISTANCEJOINT_H
00032 #define PX_DISTANCEJOINT_H
00033
00037 #include "extensions/PxJoint.h"
00038
00039 #if !PX_DOXYGEN
00040 namespace physx
00041 {
00042 #endif
00043
00044 class PxDistanceJoint;
00045
00058 PxDistanceJoint* PxDistanceJointCreate(PxPhysics& physics,
00059 PxRigidActor* actor0, const PxTransform& localFrame0,
00060 PxRigidActor* actor1, const PxTransform& localFrame1);
00061
00062
00069 struct PxDistanceJointFlag
00070 {
00071 enum Enum
00072 {
00073 eMAX_DISTANCE_ENABLED = 1<<1,
00074 eMIN_DISTANCE_ENABLED = 1<<2,
00075 eSPRING_ENABLED = 1<<3
00076 };
00077 };
00078
00079 typedef PxFlags<PxDistanceJointFlag::Enum, PxU16> PxDistanceJointFlags;
00080 PX_FLAGS_OPERATORS(PxDistanceJointFlag::Enum, PxU16)
00081
00082
00087 class PxDistanceJoint : public PxJoint
00088 {
00089 public:
00090
00091
00096 virtual PxReal getDistance() const = 0;
00097
00111 virtual void setMinDistance(PxReal distance) = 0;
00112
00121 virtual PxReal getMinDistance() const = 0;
00122
00123
00137 virtual void setMaxDistance(PxReal distance) = 0;
00138
00147 virtual PxReal getMaxDistance() const = 0;
00148
00149
00158 virtual void setTolerance(PxReal tolerance) = 0;
00159
00160
00174 virtual PxReal getTolerance() const = 0;
00175
00189 virtual void setStiffness(PxReal stiffness) = 0;
00190
00199 virtual PxReal getStiffness() const = 0;
00200
00201
00215 virtual void setDamping(PxReal damping) = 0;
00216
00217
00226 virtual PxReal getDamping() const = 0;
00227
00238 virtual void setDistanceJointFlags(PxDistanceJointFlags flags) = 0;
00239
00240
00250 virtual void setDistanceJointFlag(PxDistanceJointFlag::Enum flag, bool value) = 0;
00251
00260 virtual PxDistanceJointFlags getDistanceJointFlags(void) const = 0;
00261
00265 virtual const char* getConcreteTypeName() const { return "PxDistanceJoint"; }
00266
00267 protected:
00268
00269
00270
00274 PX_INLINE PxDistanceJoint(PxType concreteType, PxBaseFlags baseFlags) : PxJoint(concreteType, baseFlags) {}
00275
00279 PX_INLINE PxDistanceJoint(PxBaseFlags baseFlags) : PxJoint(baseFlags) {}
00280
00284 virtual bool isKindOf(const char* name) const { return !::strcmp("PxDistanceJoint", name) || PxJoint::isKindOf(name); }
00285
00286
00287 };
00288
00289 #if !PX_DOXYGEN
00290 }
00291 #endif
00292
00294 #endif