src/PhysicsObject.cc
changeset 285 c080c8c70333
parent 282 e0e4dfc3e528
child 287 f59c8dee7f91
--- a/src/PhysicsObject.cc	Mon Dec 08 15:02:05 2008 +0000
+++ b/src/PhysicsObject.cc	Mon Dec 08 15:37:34 2008 +0000
@@ -9,6 +9,7 @@
             float collision_elasticity, bool enabled) :
     world(world), 
     position(position), 
+    previousPosition(position),
     velocity(velocity), 
     mass(mass), 
     inAir(true), 
@@ -79,9 +80,8 @@
 void PhysicsObject::walk (TimeMS dt, bool right) {
     float velocity = PLAYER_WALK_SPEED;
     float walkAmount = (velocity*dt)/1000;
-    Vector reached = this->position;
-    while (walkAmount > 0 && !this->inAir) {
-        this->position = walk_one_step((1 < walkAmount ? 1 : walkAmount), right);
+    while (walkAmount > 0){// && !this->inAir) {
+        setPosition (walk_one_step((1 < walkAmount ? 1 : walkAmount), right));
         walkAmount--;
     }
     // TODO: Should the remaining walkAmount be handled somehow?
@@ -240,11 +240,11 @@
             // This means everything was ok, so no need to do anything
         }
 
-        this->position = newPosition;
+        setPosition (newPosition);
 
     } else {
         newPosition = reached;
-        this->position = newPosition;
+        setPosition (newPosition);
 
         // the following may delete this object, so it must be the last thing called
         onCollision(collisionPoint, NULL);
@@ -327,7 +327,7 @@
 }
 
 void PhysicsObject::updatePhysics (Vector position, Vector velocity, bool inAir, FacingDirection facing, float aim) {
-    this->position = position;
+    setPosition (position);
     this->velocity = velocity;
     this->inAir = inAir;
     this->facing = facing;
@@ -338,6 +338,15 @@
     return position;
 }
     
+Vector PhysicsObject::getPreviousPosition (void) const {
+    return previousPosition;
+}
+    
+void PhysicsObject::setPosition (Vector pos) {
+    this->previousPosition = this->position;
+    this->position = pos;
+}
+    
 PixelCoordinate PhysicsObject::getCoordinate (void) const {
     return world.getPixelCoordinate(position);
 }