ekku@197: ekku@197: #include "PhysicsWorld.hh" ekku@197: #include "Engine.hh" ekku@197: ekku@222: #include ekku@222: ekku@222: PhysicsWorld::PhysicsWorld (Vector gravity, Vector dimensions) : terom@255: Terrain(dimensions.x, dimensions.y, 1337), tick_timer(PHYSICS_TICK_MS), dimensions(dimensions), gravity(gravity) ekku@222: { terom@205: slots.connect(tick_timer.sig_tick(), this, &PhysicsWorld::tick); terom@205: tick_timer.start(); ekku@197: } ekku@197: ekku@222: void PhysicsWorld::addPhysicsObject (PhysicsObject *po) { ekku@222: objects.push_back(po); ekku@197: } ekku@197: ekku@225: void PhysicsWorld::removePhysicsObject (PhysicsObject *po) { ekku@225: objects.remove(po); ekku@225: } ekku@197: terom@205: void PhysicsWorld::tick (TimeMS tick_length) { terom@255: // tick each object in turn ekku@222: for (std::list::iterator i = objects.begin(); i != objects.end(); i++) { terom@205: (*i)->tick(tick_length); ekku@197: } ekku@197: ekku@222: // Delete destroyed objects ekku@222: objects.remove_if(std::mem_fun(&PhysicsObject::removeIfDestroyed)); ekku@197: } ekku@197: