예제 #1
0
void BulletPhysics::RemoveGameObject(GameObjectId id)
{
	// remove an object from the physics sim
	btRigidBody* body = FindBulletRigidBody(id);
	if (body)
	{
		RemoveCollisionObject(body);
		m_ObjectIdToRigidBody.erase(id);
		m_RigidBodyToObjectId.erase(body);
	}
}
예제 #2
0
		void CollisionObject::ReInsertIntoWorld()
		{
			if(_owner)
			{
				auto world = _owner;
				
				world->Lock();
				world->RemoveCollisionObject(this);
				world->InsertCollisionObject(this);
				world->Unlock();
			}
		}
예제 #3
0
BulletPhysics::~BulletPhysics()
{
	// delete any physics objects still in the world
	// iterate backwards so the vector doesnt have to move objects
	for (int i = m_DynamicsWorld->getNumCollisionObjects() - 1; i >= 0; i--)
	{
		btCollisionObject* obj = m_DynamicsWorld->getCollisionObjectArray()[i];
		RemoveCollisionObject(obj);
	}

	m_RigidBodyToObjectId.clear();
	
	// physics objects are smart ptr's and will clean themselves up
}