Here's my code -
Code: Select all
void PhysicsManager::Init()
{
m_broadphase = new btAxisSweep3(GameWorld::GetWorldMin(),GameWorld::GetWorldMax());
m_collisionConfiguration = new btDefaultCollisionConfiguration();
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
m_solver = new btSequentialImpulseConstraintSolver();
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
m_dynamicsWorld->setGravity(btVector3(0,-10,0));
}
//based off demo application
btRigidBody* PhysicsManager::CreateRigidBody(const btScalar mass, const btVector3& pos,btCollisionShape* shape)
{
btAssert((!shape || shape->getShapeType() != INVALID_SHAPE_PROXYTYPE));
bool isDynamic = (mass != 0.f);
btVector3 localInertia(0,0,0);
if (isDynamic)
shape->calculateLocalInertia(mass,localInertia);
btDefaultMotionState* motionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),pos));
btRigidBody::btRigidBodyConstructionInfo cInfo(mass,motionState,shape,localInertia);
// shape = fine over here
btRigidBody* body = new btRigidBody(cInfo);
body->btCollisionObject->m_collisionShape = 0 after construction
Code: Select all
//m_dynamicsWorld->getNumCollisionObjects() = 0 over here
m_dynamicsWorld->addRigidBody(body);
// m_dynamicsWorld->getNumCollisionObjects() also = 0 over here ?
return body;
}