I'm trying to create a constraint between the paddles rigid body and an invisible ground plane.
Code: Select all
void CPhysics::AddConstraint(btRigidBody *body, D3DXVECTOR3 extents)
{
btGeneric6DofConstraint *slider;
btTransform identity = btTransform::getIdentity();
btTransform transform;
transform.setIdentity();
body->getMotionState()->getWorldTransform(transform);
transform.setOrigin(btVector3(transform.getOrigin().getX(),
transform.getOrigin().getY(),
transform.getOrigin().getZ()));
btScalar mass(0.);
btVector3 localInertia(0,0,0);
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
btDefaultMotionState *myMotionState = new btDefaultMotionState(transform);
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass, myMotionState, 0, localInertia);
btRigidBody *pin = new btRigidBody(rbInfo);
slider = new btGeneric6DofConstraint(*body, *pin,
identity, identity, true);
btVector3 lowerSliderLimit = btVector3(-35+extents.x,0,0);
btVector3 hiSliderLimit = btVector3(35-extents.x,0,0);
slider->setAngularLowerLimit(btVector3(0,0,0));
slider->setAngularUpperLimit(btVector3(0,0,0));
slider->setLinearLowerLimit(lowerSliderLimit);
slider->setLinearUpperLimit(hiSliderLimit);
m_dynamicsWorld->addConstraint(slider);
}
I should note that if I make the limits smaller then the level I don't seem to have a problem. Its when the limit is bigger then the level and the paddle is running into the trimesh that makes up the walls.