Fix collision code getting stuck if speed is 0
authorPerttu Ahola <celeron55@gmail.com>
Sat, 7 Apr 2012 16:19:36 +0000 (19:19 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Sat, 7 Apr 2012 16:19:36 +0000 (19:19 +0300)
src/collision.cpp

index 3460b04fdb719f75072c444ae243f61a5957de0a..ff0c083fd0bfa6efed23833b54c241da9c3f6297 100644 (file)
@@ -29,6 +29,10 @@ collisionMoveResult collisionMoveSimple(Map *map, IGameDef *gamedef,
 {
        collisionMoveResult result;
 
+       // If there is no speed, there are no collisions
+       if(speed_f.getLength() == 0)
+               return result;
+
        v3f oldpos_f = pos_f;
        v3s16 oldpos_i = floatToInt(oldpos_f, BS);
 
@@ -196,6 +200,10 @@ collisionMoveResult collisionMovePrecise(Map *map, IGameDef *gamedef,
                f32 dtime, v3f &pos_f, v3f &speed_f)
 {
        collisionMoveResult final_result;
+       
+       // If there is no speed, there are no collisions
+       if(speed_f.getLength() == 0)
+               return final_result;
 
        // Maximum time increment (for collision detection etc)
        // time = distance / speed