This commit is contained in:
rponom
2008-09-19 21:08:13 +00:00
parent 97766f45e6
commit 6a21ee6146

View File

@@ -32,7 +32,8 @@ const int numObjects = 3;
#define CUBE_HALF_EXTENTS 1.f
#define M_PI 3.1415926f
#define M_PI_2 ((M_PI)*0.5f)
btTransform sliderTransform;
btVector3 lowerSliderLimit = btVector3(-10,0,0);
@@ -40,6 +41,8 @@ btVector3 hiSliderLimit = btVector3(10,0,0);
btRigidBody* d6body0 =0;
btHingeConstraint* spDoorHinge = NULL;
void drawLimit()
{
btVector3 from = sliderTransform*lowerSliderLimit;
@@ -144,13 +147,30 @@ void ConstraintDemo::initPhysics()
slider->setLinearUpperLimit(hiSliderLimit);
//range should be small, otherwise singularities will 'explode' the constraint
slider->setAngularLowerLimit(btVector3(10,0,0));
slider->setAngularLowerLimit(btVector3(20,0,0));
slider->setAngularUpperLimit(btVector3(0,0,0));
m_dynamicsWorld->addConstraint(slider);
}
{ // create a door using hinge constraint attached to the world
btCollisionShape* pDoorShape = new btBoxShape(btVector3(2.0f, 5.0f, 0.2f));
m_collisionShapes.push_back(pDoorShape);
btTransform doorTrans;
doorTrans.setIdentity();
doorTrans.setOrigin(btVector3(-5.0f, 0.0f, 0.0f));
btRigidBody* pDoorBody = localCreateRigidBody( 1.0, doorTrans, pDoorShape);
pDoorBody->setActivationState(DISABLE_DEACTIVATION);
const btVector3 btPivotA( 2.1f, 0.0f, 0.0f ); // right next to the door slightly outside
btVector3 btAxisA( 0.0f, 1.0f, 0.0f ); // pointing upwards, aka Y-axis
spDoorHinge = new btHingeConstraint( *pDoorBody, btPivotA, btAxisA );
spDoorHinge->setLimit( 0.0f, M_PI_2 );
m_dynamicsWorld->addConstraint(spDoorHinge);
}
}
ConstraintDemo::~ConstraintDemo()