Initial values for the physics world:
Code: Select all
// Initialize Bullet configurations
mPhysicsConfig = new btDefaultCollisionConfiguration();
mPhysicsDispatcher = new btCollisionDispatcher(mPhysicsConfig);
mPhysicsSolver = new btSequentialImpulseConstraintSolver;
mPhysicsBroadphase = new btAxisSweep3(worldAABBMin,worldAABBMax,maxProxies);
// Create Bullet physics world
mPhysicsWorld = new btDiscreteDynamicsWorld(mPhysicsDispatcher,mPhysicsBroadphase,mPhysicsSolver);
// Set initial values
mPhysicsWorld->getDispatchInfo().m_enableSPU = true;
mPhysicsWorld->setGravity(btVector3(0,-0.5,0));
Code: Select all
SFMatrix4f PhysicsObject::GetMatrix() {
float data[16];
mMotionState->getWorldTransform(mTransform);
mTransform.getOpenGLMatrix(data);
SFMatrix4f matrix = new SFMatrix4f(data, 1);
return matrix;
}
Code: Select all
void PhysicsObject::BuildCollision(btCollisionShape* collisionShape) {
mMotionState = new btDefaultMotionState(mTransform);
mRigidBody = new btRigidBody(mMass, mMotionState, collisionShape, mInertia, 0.1f, 0.1f, 1.0f, 0.8f);
GAME->GetPhysicsSystem()->GetPhysicsWorld()->addRigidBody(mRigidBody);
mRigidBody->setCcdSquareMotionThreshold(btScalar(CALCULATION_THRESHOLD));
mRigidBody->setSleepingThresholds(0.1f, 0.1f);
mRigidBody->setCenterOfMassTransform(mTransform);
mRigidBody->setActivationState(4);
}