Index: branches/single_player_map/src/lib/collision_reaction/cr_physics_ground_walk.cc
===================================================================
--- branches/single_player_map/src/lib/collision_reaction/cr_physics_ground_walk.cc	(revision 9044)
+++ branches/single_player_map/src/lib/collision_reaction/cr_physics_ground_walk.cc	(revision 9050)
@@ -95,11 +95,12 @@
         // collision in the x-axis
       case COLLISION_TYPE_AXIS_X:
-        front = collPos.x - box->halfLength[0]; // should be [0]
+        front = collPos.len() - box->halfLength[0]; // should be [0]
 
         // object is beneath the plane (ground)
         if( front <= 0.0f )
         {
-          Vector backoff = entity->getAbsDirX() * front;
-//           entity->shiftCoor(backoff);
+          Vector dirX = entity->getAbsDirX(); dirX.y = 0.0f; dirX.normalize();
+          Vector backoff = dirX * front;
+          entity->shiftCoor(backoff);
         }
         // object is already in the wall
@@ -118,7 +119,8 @@
 
         // object is beneath the plane (ground)
-        if( height <= 0.0f )
-        {
-          entity->shiftCoor(Vector(0.0f, -height, 0.0f));
+        if(height >= 0.0f && height <= 0.0001f) break ;// Do nothing
+        else if( height < 0.0f )
+        {
+          entity->shiftCoor(Vector(0.0f, -height + 0.00001, 0.0f));
           entity->setOnGround(true);
         }
@@ -139,11 +141,13 @@
       case COLLISION_TYPE_AXIS_Z:
 
-        side = collPos.z - box->halfLength[2]; // should be [2]
+        side = collPos.len()  - box->halfLength[2]; // should be [2]
 
         // object is beneath the plane (ground)
         if( side <= 0.0f )
         {
-          Vector backoff = entity->getAbsDirX() * side;
-//           entity->shiftCoor(backoff);
+        
+          Vector dirZ = entity->getAbsDirZ(); dirZ.y = 0.0f; dirZ.normalize();
+          Vector backoff = dirZ * side;
+//          entity->shiftCoor(backoff);
         }
         // object is already in the wall
@@ -155,5 +159,5 @@
     }
   }
-  //PRINTF(0)("collision distances: x: %f, y: %f, z: %f\n", front, height, side);
+  PRINTF(0)("collision distances: x: %f, y: %f, z: %f\n", front, height, side);
 
 
Index: branches/single_player_map/src/lib/graphics/importer/bsp_manager.cc
===================================================================
--- branches/single_player_map/src/lib/graphics/importer/bsp_manager.cc	(revision 9044)
+++ branches/single_player_map/src/lib/graphics/importer/bsp_manager.cc	(revision 9050)
@@ -986,12 +986,15 @@
 
   if( box != NULL) {
-    position = worldEntity->getAbsCoor() +  box->center + Vector(0.0, 1.0, 0.0) * box->halfLength[1];
-    dest     = worldEntity->getAbsCoor() +  box->center - Vector(0.0, 1.0, 0.0) * (box->halfLength[1] + BSP_Y_OFFSET);
-
-    position1 = worldEntity->getAbsCoor() +  box->center - worldEntity->getAbsDirX() * (box->halfLength[0]  + BSP_X_OFFSET);
-    dest1     = worldEntity->getAbsCoor() +  box->center + worldEntity->getAbsDirX() * (box->halfLength[0]  + BSP_X_OFFSET);
-
-    position2 = worldEntity->getAbsCoor() +  box->center - worldEntity->getAbsDirZ() * (box->halfLength[2]  + BSP_Z_OFFSET);
-    dest2     = worldEntity->getAbsCoor() +  box->center + worldEntity->getAbsDirZ() * (box->halfLength[2]  + BSP_Z_OFFSET);
+    position = worldEntity->getAbsCoor() +  box->center + Vector(0.0, 1.0, 0.0) * box->halfLength[1] * 0.001;
+    dest     = worldEntity->getAbsCoor() +  box->center - Vector(0.0, 1.0, 0.0) * (box->halfLength[1] + BSP_Y_OFFSET) *   100;
+
+    Vector dirX =  worldEntity->getAbsDirX(); dirX.y = 0.0f; dirX.normalize();
+    dirX.debug();
+    position1 = worldEntity->getAbsCoor() +  box->center - dirX * (box->halfLength[0]  + BSP_X_OFFSET);
+    dest1     = worldEntity->getAbsCoor() +  box->center + dirX * (box->halfLength[0]  + BSP_X_OFFSET);
+
+    Vector dirZ =  worldEntity->getAbsDirZ(); dirX.y = 0.0f; dirZ.normalize();
+    position2 = worldEntity->getAbsCoor() +  box->center - dirZ * (box->halfLength[2]  + BSP_Z_OFFSET);
+    dest2     = worldEntity->getAbsCoor() +  box->center + dirZ * (box->halfLength[2]  + BSP_Z_OFFSET);
 
   } else {
Index: branches/single_player_map/src/lib/graphics/importer/bsp_manager.h
===================================================================
--- branches/single_player_map/src/lib/graphics/importer/bsp_manager.h	(revision 9044)
+++ branches/single_player_map/src/lib/graphics/importer/bsp_manager.h	(revision 9050)
@@ -28,5 +28,5 @@
 
 
-#define BSP_X_OFFSET 20.0f
+#define BSP_X_OFFSET 40.0f
 #define BSP_Y_OFFSET 40.0f
 #define BSP_Z_OFFSET 20.0f
