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_DISTANCEJOINT_H
00031 #define PX_DISTANCEJOINT_H
00032
00036 #include "extensions/PxJoint.h"
00037
00038 #if !PX_DOXYGEN
00039 namespace physx
00040 {
00041 #endif
00042
00043 class PxDistanceJoint;
00044
00056 PxDistanceJoint* PxDistanceJointCreate(PxPhysics& physics, PxRigidActor* actor0, const PxTransform& localFrame0, PxRigidActor* actor1, const PxTransform& localFrame1);
00057
00058
00064 struct PxDistanceJointFlag
00065 {
00066 enum Enum
00067 {
00068 eMAX_DISTANCE_ENABLED = 1<<1,
00069 eMIN_DISTANCE_ENABLED = 1<<2,
00070 eSPRING_ENABLED = 1<<3
00071 };
00072 };
00073
00074 typedef PxFlags<PxDistanceJointFlag::Enum, PxU16> PxDistanceJointFlags;
00075 PX_FLAGS_OPERATORS(PxDistanceJointFlag::Enum, PxU16)
00076
00077
00082 class PxDistanceJoint : public PxJoint
00083 {
00084 public:
00085
00089 virtual PxReal getDistance() const = 0;
00090
00103 virtual void setMinDistance(PxReal distance) = 0;
00104
00112 virtual PxReal getMinDistance() const = 0;
00113
00126 virtual void setMaxDistance(PxReal distance) = 0;
00127
00135 virtual PxReal getMaxDistance() const = 0;
00136
00144 virtual void setTolerance(PxReal tolerance) = 0;
00145
00159 virtual PxReal getTolerance() const = 0;
00160
00173 virtual void setStiffness(PxReal stiffness) = 0;
00174
00182 virtual PxReal getStiffness() const = 0;
00183
00196 virtual void setDamping(PxReal damping) = 0;
00197
00205 virtual PxReal getDamping() const = 0;
00206
00216 virtual void setDistanceJointFlags(PxDistanceJointFlags flags) = 0;
00217
00226 virtual void setDistanceJointFlag(PxDistanceJointFlag::Enum flag, bool value) = 0;
00227
00235 virtual PxDistanceJointFlags getDistanceJointFlags() const = 0;
00236
00240 virtual const char* getConcreteTypeName() const { return "PxDistanceJoint"; }
00241
00242 protected:
00243
00244
00245
00249 PX_INLINE PxDistanceJoint(PxType concreteType, PxBaseFlags baseFlags) : PxJoint(concreteType, baseFlags) {}
00250
00254 PX_INLINE PxDistanceJoint(PxBaseFlags baseFlags) : PxJoint(baseFlags) {}
00255
00259 virtual bool isKindOf(const char* name) const { return !::strcmp("PxDistanceJoint", name) || PxJoint::isKindOf(name); }
00260
00261
00262 };
00263
00264 #if !PX_DOXYGEN
00265 }
00266 #endif
00267
00269 #endif