00001
00002 #include "PhysicsJointSlider.h"
00003
00004 #include "PhysicsManager.h"
00005
00006 namespace vrsode
00007 {
00008
00009 PhysicsJointSlider::PhysicsJointSlider(VRS::SO<PhysicsBody> p_bodyOne,
00010 VRS::SO<PhysicsBody> p_bodyTwo,
00011 VRS::Vector p_axis)
00012 : PhysicsJoint(p_bodyOne, p_bodyTwo)
00013 {
00014 dBodyID bodyOne;
00015 dBodyID bodyTwo;
00016 p_bodyOne != 0 ? bodyOne = p_bodyOne->bodyId() : bodyOne = 0;
00017 p_bodyTwo != 0 ? bodyTwo = p_bodyTwo->bodyId() : bodyTwo = 0;
00018
00019 setJointId(dJointCreateSlider(PhysicsManager::get()->worldId(), 0));
00020 dJointAttach(jointId(), bodyOne, bodyTwo);
00021 dJointSetSliderAxis(jointId(), p_axis[0], p_axis[1], p_axis[2]);
00022 dJointSetData(jointId(), this);
00023 }
00024
00025 PhysicsJointSlider::~PhysicsJointSlider()
00026 {
00027 dJointDestroy(jointId());
00028 }
00029
00030 void
00031 PhysicsJointSlider::setLowStop(double p_lowStop)
00032 {
00033 dJointSetSliderParam(jointId(), dParamLoStop, p_lowStop);
00034 }
00035
00036 void
00037 PhysicsJointSlider::setHighStop(double p_highStop)
00038 {
00039 dJointSetSliderParam(jointId(), dParamHiStop, p_highStop);
00040 }
00041
00042 void
00043 PhysicsJointSlider::setMotorVelocity(double p_velocity)
00044 {
00045 dJointSetSliderParam(jointId(), dParamVel, p_velocity);
00046 }
00047
00048 void
00049 PhysicsJointSlider::setMotorMaxForce(double p_maxForce)
00050 {
00051 dJointSetSliderParam(jointId(), dParamFMax, p_maxForce);
00052 }
00053
00054 void
00055 PhysicsJointSlider::setStopBounce(double p_bounce)
00056 {
00057 dJointSetSliderParam(jointId(), dParamBounce, p_bounce);
00058 }
00059
00060 void
00061 PhysicsJointSlider::addForce(double p_force)
00062 {
00063 dJointAddSliderForce(jointId(), p_force);
00064 }
00065
00066 void
00067 PhysicsJointSlider::setCFM(double p_cfm)
00068 {
00069 dJointSetSliderParam(jointId(), dParamCFM, p_cfm);
00070 }
00071
00072 }