src/PhysicsWorld.cc
author ekku
Sat, 06 Dec 2008 19:38:01 +0000
changeset 225 22ecb9cb9245
parent 222 293ddf4c067d
child 255 99431fdb0dc8
permissions -rw-r--r--
Rope can be drawn.
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     1
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     2
#include "PhysicsWorld.hh"
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     3
#include "Engine.hh"
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
     4
222
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
     5
#include <functional>
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
     6
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
     7
PhysicsWorld::PhysicsWorld (Vector gravity, Vector dimensions) :
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
     8
     Terrain(1337), tick_timer(PHYSICS_TICK_MS), dimensions(dimensions), gravity(gravity)
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
     9
{
205
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 204
diff changeset
    10
    slots.connect(tick_timer.sig_tick(), this, &PhysicsWorld::tick);
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 204
diff changeset
    11
    tick_timer.start();
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    12
}
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    13
222
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
    14
void PhysicsWorld::addPhysicsObject (PhysicsObject *po) {
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
    15
    objects.push_back(po);
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    16
}
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    17
225
22ecb9cb9245 Rope can be drawn.
ekku
parents: 222
diff changeset
    18
void PhysicsWorld::removePhysicsObject (PhysicsObject *po) {
22ecb9cb9245 Rope can be drawn.
ekku
parents: 222
diff changeset
    19
    objects.remove(po);
22ecb9cb9245 Rope can be drawn.
ekku
parents: 222
diff changeset
    20
}
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    21
205
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 204
diff changeset
    22
void PhysicsWorld::tick (TimeMS tick_length) {
222
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
    23
    for (std::list<PhysicsObject*>::iterator i = objects.begin(); i != objects.end(); i++) {
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
    24
//        Engine::log(DEBUG, "PhysicsWorld.tick") << (*i);
205
905028e58ed1 implement a new tick-timer that doesn't suck
terom
parents: 204
diff changeset
    25
        (*i)->tick(tick_length); 
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    26
    }
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    27
222
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
    28
    // Delete destroyed objects
293ddf4c067d reorganize PhysicsObject/Player/Projectile lists so that PhysicsObject doesn't need to know about its subclasses anymore, and PhysicsWorld doesn't need to know about GameState
ekku
parents: 208
diff changeset
    29
    objects.remove_if(std::mem_fun(&PhysicsObject::removeIfDestroyed));
197
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    30
}
d9ac888de778 Hajotetaan lis??
ekku
parents:
diff changeset
    31