00001 /* 00002 * PhysX joint header 00003 * 00004 * This file is part of the "SoftPixel Engine" (Copyright (c) 2008 by Lukas Hermanns) 00005 * See "SoftPixelEngine.hpp" for license information. 00006 */ 00007 00008 #ifndef __SP_PHYSICS_PHYSX_JOINT_H__ 00009 #define __SP_PHYSICS_PHYSX_JOINT_H__ 00010 00011 00012 #include "Base/spStandard.hpp" 00013 00014 #ifdef SP_COMPILE_WITH_PHYSX 00015 00016 00017 #include "Base/spDimension.hpp" 00018 #include "Framework/Physics/spPhysicsRigidBody.hpp" 00019 #include "Framework/Physics/spPhysicsJoint.hpp" 00020 #include "Framework/Physics/PhysX/spPhysXBaseObject.hpp" 00021 00022 00023 namespace sp 00024 { 00025 namespace physics 00026 { 00027 00028 00029 class PhysXRigidBody; 00030 00031 class SP_EXPORT PhysXJoint : public PhysicsJoint 00032 { 00033 00034 public: 00035 00036 PhysXJoint( 00037 PxPhysics* PxDevice, 00038 const EPhysicsJoints Type, PhysXRigidBody* ObjectA, 00039 PhysicsBaseObject* ObjectB, const SPhysicsJointConstruct &Construct 00040 ); 00041 ~PhysXJoint(); 00042 00043 /* === Functions === */ 00044 00045 void setPosition(const dim::vector3df &Position); 00046 dim::vector3df getPosition() const; 00047 00048 void setLimit(bool Enable); 00049 bool getLimit() const; 00050 00051 void setLimit(f32 Min, f32 Max, bool Enable = true); 00052 void getLimit(f32 &Min, f32 &Max) const; 00053 00054 void setMotor(bool Enable, f32 MotorPower = 100.0f); 00055 bool getMotor() const; 00056 00057 void runMotor(f32 Velocity); 00058 00059 f32 getLinearValue() const; 00060 00061 private: 00062 00063 /* === Members === */ 00064 00065 PxJoint* PxJoint_; 00066 00067 PxRigidDynamic* PxRigidBody0_; 00068 PxRigidDynamic* PxRigidBody1_; 00069 00070 }; 00071 00072 00073 } // /namespace physics 00074 00075 } // /namespace sp 00076 00077 00078 #endif 00079 00080 #endif 00081 00082 00083 00084 // ================================================================================