#include "PhysicsWorld.hh"
#include "Engine.hh"
#include <functional>
PhysicsWorld::PhysicsWorld (Vector gravity, Vector dimensions) :
Terrain(1337), tick_timer(PHYSICS_TICK_MS), dimensions(dimensions), gravity(gravity)
{
slots.connect(tick_timer.sig_tick(), this, &PhysicsWorld::tick);
tick_timer.start();
}
void PhysicsWorld::addPhysicsObject (PhysicsObject *po) {
objects.push_back(po);
}
void PhysicsWorld::removePhysicsObject (PhysicsObject *po) {
objects.remove(po);
}
void PhysicsWorld::tick (TimeMS tick_length) {
for (std::list<PhysicsObject*>::iterator i = objects.begin(); i != objects.end(); i++) {
// Engine::log(DEBUG, "PhysicsWorld.tick") << (*i);
(*i)->tick(tick_length);
}
// Delete destroyed objects
objects.remove_if(std::mem_fun(&PhysicsObject::removeIfDestroyed));
}