Hi, I've been playing around with bullet and bumped into a problem.
The collision shapes cannot be deleted right after they are created.
Here are some samples;
First the init:
coll_config=new btDefaultCollisionConfiguration(); coll_dispatch=new btCollisionDispatcher(coll_config); overlap_paircache=new btDbvtBroadphase(); solver=new btSequentialImpulseConstraintSolver; world=new btDiscreteDynamicsWorld(coll_dispatch,overlap_paircache,solver,coll_config); world->setGravity(btVector3(0,-9.81f,0));
pretty simple, from the basic samples.
And this is weird:
// Create the shape btCollisionShape* shape=new btBoxShape(btVector3(1,1,1)); btVector3 inertia(0,0,0); shape->calculateLocalInertia(5,inertia); btTransform trans; trans.setBasis(btMatrix3x3(1,0,0,0,1,0,0,0,1)); trans.setOrigin(btVector3(0,0,0)); btDefaultMotionState* mstate=new btDefaultMotionState(trans); btRigidBody::btRigidBodyConstructionInfo ci(5,mstate,shape,inertia); btRigidBody* body=new btRigidBody(ci); world->addRigidBody(body); // And remove! btCollisionObject* obj=world->getCollisionObjectArray(); delete body->getCollisionShape(); delete body->getMotionState(); delete body; world->removeCollisionObject(obj); delete obj;
The remove method is also from some basic sample.
But in this case the removeCollisionObject() references some uninitialized broadphase proxy pointer.
The same happens with SimpleBroadphaseProxy.
the strange thing is, the whole thing works after the simulation is running for some time.
Did anybody have anything similar???