src/PhysicsWorld.cc
author saiam
Sun, 07 Dec 2008 19:02:45 +0000
changeset 249 5647f58e37cd
parent 225 22ecb9cb9245
child 255 99431fdb0dc8
permissions -rw-r--r--
Removed some unnecessary TODOs

#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));
}