I use bullet only to RayCast to many boxes without dynamics simulation.
This is initialize code.
Code: Select all
btCollisionConfiguration* pConfig = new btDefaultCollisionConfiguration();
btCollisionDispatcher* pDispatcher = new btCollisionDispatcher( pConfig );
btDbvtBroadphase* pDbvtBroadPhase = new btDbvtBroadphase();
btCollisionWorld world = new btCollisionWorld( pDispatcher, pDbvtBroadPhase, pConfig );
//add many objects
btCollisionObject obj;
obj.getWorldTransform().setBasis(...);
obj.getWorldTransform().setOrigin(...);
obj.setCollisionShape(...);
world ->addCollisionObject(&obj);
I wrote following codes to remove all CollisionObjects from world.
Code: Select all
for (int i = m_collisionWorld->getNumCollisionObjects() - 1 ; i >= 0 ; i--)
{
btCollisionObject* obj = world->getCollisionObjectArray()[i];
world ->removeCollisionObject( obj );
}
//memory release code is omitted.
How do I remove btCollisionObject from btCollisionWorld more quicker?
I'm looking for more faster method.
#note#
The speed of addCollisionObject is quickly enough.
The speed of RayCast is quickly enough too.
<ratio of speed (about)>
add 20,000 objects : remove 20,000 object = 1 : 25
My English might be strange, because it is Japanese. pardon me.