compiles cleanly with -Wall -Wextra -Wconversion, not tested, but that shouldn't break anything :)
#include "PhysicsWorld.hh"
#include "Engine.hh"
#include <functional>
PhysicsWorld::PhysicsWorld (Vector gravity, Vector dimensions) :
// XXX: assume Vector == PixelCoordinate
Terrain((unsigned int) dimensions.x, (unsigned int) dimensions.y, 1337),
dimensions(dimensions),
gravity(gravity),
tick_timer(PHYSICS_TICK_MS)
{
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) {
// tick each object in turn
for (std::list<PhysicsObject*>::iterator i = objects.begin(); i != objects.end(); i++) {
(*i)->tick(tick_length);
}
// Delete destroyed objects
objects.remove_if(std::mem_fun(&PhysicsObject::removeIfDestroyed));
}