Show joint.cpp syntax highlighted
#include "joint.h"
#include "rigidbody.h"
namespace NeoNewton
{
/*
Joint::Joint( RigidBody * pkChild, RigidBody * pkParent ) :
m_pkChildBody( pkChild->m_pkBody )
{
m_pkParentBody = pkParent ? ( pkParent->m_pkBody ) : 0 ;
m_pkWorld = NewtonBodyGetWorld( pkChild->m_pkBody );
}
*/
void Joint::Destroy()
{
NewtonDestroyJoint( GetWorld(), m_pkJoint );
}
NewtonWorld * Joint::GetWorld()
{
return static_cast< PhysicWorld * >( m_pkWorld )->Get();
}
NewtonBody * Joint::GetChild()
{
return m_pkChildBody ? static_cast< RigidBody * >( m_pkChildBody )->m_pkBody : 0;
}
NewtonBody * Joint::GetParent()
{
return m_pkParentBody ? static_cast< RigidBody * >( m_pkParentBody )->m_pkBody : 0;
}
float Joint::GetStiffness()
{
return NewtonJointGetStiffness( m_pkJoint );
}
void Joint::SetStiffness( float fStiffness )
{
NewtonJointSetStiffness( m_pkJoint, fStiffness );
}
BallAndSocketJoint::BallAndSocketJoint( const Vector3d &rkPivot ) :
NeoEngine::BallAndSocketJoint( rkPivot ),
Joint()
{
}
void BallAndSocketJoint::Attach( NeoEngine::RigidBody * pkParent, NeoEngine::RigidBody * pkChild )
{
NeoEngine::BallAndSocketJoint::Attach( pkParent, pkChild );
float pivot[3] = { m_kPivot.x, m_kPivot.y, m_kPivot.z };
m_pkJoint = NewtonConstraintCreateBall( GetWorld(), pivot, GetChild(), GetParent() );
}
void BallAndSocketJoint::SetConeLimits( const Vector3d & rkPin, float fMaxConeAngle, float fMaxTwistAngle )
{
float pin[3] = { rkPin.x, rkPin.y, rkPin.z };
NewtonBallSetConeLimits( m_pkJoint, pin, fMaxConeAngle, fMaxTwistAngle );
}
//
HingeJoint::HingeJoint( const Vector3d &rkPivot, const Vector3d & rkPin ) :
NeoEngine::HingeJoint( rkPivot, rkPin ),
Joint()
{
}
void HingeJoint::Attach( NeoEngine::RigidBody * pkParent, NeoEngine::RigidBody * pkChild )
{
NeoEngine::HingeJoint::Attach( pkParent, pkChild );
float pivot[3] = { m_kPivot.x, m_kPivot.y, m_kPivot.z };
float pin[3] = { m_kPin.x, m_kPin.y, m_kPin.z };
m_pkJoint = NewtonConstraintCreateHinge( GetWorld(), pivot, pin, GetChild(), GetParent() );
}
//
SliderJoint::SliderJoint( const Vector3d &rkPivot, const Vector3d & rkPin ) :
NeoEngine::SliderJoint( rkPivot, rkPin ),
Joint()
{
}
void SliderJoint::Attach( NeoEngine::RigidBody * pkParent, NeoEngine::RigidBody * pkChild )
{
NeoEngine::SliderJoint::Attach( pkParent, pkChild );
float pivot[3] = { m_kPivot.x, m_kPivot.y, m_kPivot.z };
float pin[3] = { m_kPin.x, m_kPin.y, m_kPin.z };
m_pkJoint = NewtonConstraintCreateSlider( GetWorld(), pivot, pin, GetChild(), GetParent() );
}
//
CorkscrewJoint::CorkscrewJoint( const Vector3d &rkPivot, const Vector3d & rkPin ) :
NeoEngine::CorkscrewJoint( rkPivot, rkPin ),
Joint()
{
}
void CorkscrewJoint::Attach( NeoEngine::RigidBody * pkParent, NeoEngine::RigidBody * pkChild )
{
NeoEngine::CorkscrewJoint::Attach( pkParent, pkChild );
float pivot[3] = { m_kPivot.x, m_kPivot.y, m_kPivot.z };
float pin[3] = { m_kPin.x, m_kPin.y, m_kPin.z };
m_pkJoint = NewtonConstraintCreateCorkscrew( GetWorld(), pivot, pin, GetChild(), GetParent() );
}
}; // end namespace NeoNewton
See more files for this project here