Index: trunk/src/story_entities/world.cc
===================================================================
--- trunk/src/story_entities/world.cc	(revision 6033)
+++ trunk/src/story_entities/world.cc	(revision 6034)
@@ -415,5 +415,6 @@
   }
 
-  this->music = NULL;//(OggPlayer*)ResourceManager::getInstance()->load("sound/00-luke_grey_-_hypermode.ogg", OGG, RP_LEVEL);
+  this->music = NULL;
+  //(OggPlayer*)ResourceManager::getInstance()->load("sound/00-luke_grey_-_hypermode.ogg", OGG, RP_LEVEL);
   //music->playback();
 }
Index: trunk/src/world_entities/camera.cc
===================================================================
--- trunk/src/world_entities/camera.cc	(revision 6033)
+++ trunk/src/world_entities/camera.cc	(revision 6034)
@@ -1,4 +1,2 @@
-
-
 /*
    orxonox - the future of 3D-vertical-scrollers
@@ -115,4 +113,5 @@
 void Camera::setViewMode(ViewMode mode)
 {
+  currentMode = mode;
   switch (mode)
     {
@@ -180,5 +179,5 @@
 {
   float tmpFovy = (this->toFovy - this->fovy) ;
-  if (tmpFovy > .01)
+  if (tmpFovy > 0.01)
     this->fovy += tmpFovy * fabsf(dt);
 }
@@ -207,7 +206,9 @@
   Vector targetPosition = this->target->getAbsCoor();
   Vector up = this->getAbsDirV();
+  Vector delay = Vector(0,0,0);
+  if( currentMode != VIEW_FRONT) delay = (this->target->getAbsDirX() * this->target->getSpeed())/30;
 
   // Setting the Camera Eye, lookAt and up Vectors
-  gluLookAt(cameraPosition.x, cameraPosition.y, cameraPosition.z,
+  gluLookAt(cameraPosition.x - delay.x, cameraPosition.y - delay.y, cameraPosition.z - delay.z,
             targetPosition.x, targetPosition.y, targetPosition.z,
             up.x, up.y, up.z);
Index: trunk/src/world_entities/camera.h
===================================================================
--- trunk/src/world_entities/camera.h	(revision 6033)
+++ trunk/src/world_entities/camera.h	(revision 6034)
@@ -58,4 +58,5 @@
 
   float             toFovy;          //!< The fovy-mode to iterate to.
+  ViewMode          currentMode;     //!< The ViewMode the camera is in
 };
 
Index: trunk/src/world_entities/space_ships/space_ship.cc
===================================================================
--- trunk/src/world_entities/space_ships/space_ship.cc	(revision 6033)
+++ trunk/src/world_entities/space_ships/space_ship.cc	(revision 6034)
@@ -11,5 +11,5 @@
 ### File Specific:
    main-programmer: Benjamin Knecht
-   co-programmer: ...
+   co-programmer: Silvan Nellen
 
 */
@@ -20,4 +20,5 @@
 #include "space_ship.h"
 
+#include "objModel.h"
 #include "resource_manager.h"
 
@@ -111,5 +112,5 @@
   PRINTF(4)("SPACESHIP INIT\n");
 
-  EventHandler::getInstance()->grabEvents(false);
+  EventHandler::getInstance()->grabEvents(true);
 
   bUp = bDown = bLeft = bRight = bAscend = bDescend = bRollL = bRollR = false;
@@ -117,4 +118,5 @@
   xMouse = yMouse = 0;
   mouseSensitivity = 0.001;
+  airViscosity = 1.0;
 
   cycle = 0.0;
@@ -253,5 +255,5 @@
 void SpaceShip::tick (float time)
 {
-     cycle += time;
+
   // spaceship controlled movement
   this->calculateVelocity(time);
@@ -259,10 +261,19 @@
   Vector move = (velocity)*time;
 
-  //orient the spaceship model in the direction of movement.
+  //orient the velocity in the direction of the spaceship.
+  travelSpeed = velocity.len();
+  velocity += ((this->getAbsDirX())*travelSpeed-velocity)*airViscosity;
+  velocity = (velocity.getNormalized())*travelSpeed;
 
   // this is the air friction (necessary for a smooth control)
   if(velocity.len() != 0) velocity -= velocity*0.01;
 
+  //hoover effect
+  cycle += time;
   this->shiftCoor(Vector(0,1,0)*cos(this->cycle*2.0)*0.02);
+
+  //readjust
+ // if (this->getAbsDirZ().y > 0.1) this->shiftDir(Quaternion(time*0.3, Vector(1,0,0)));
+  //else if (this->getAbsDirZ().y < -0.1) this->shiftDir(Quaternion(-time*0.3, Vector(1,0,0)));
 
   //SDL_WarpMouse(GraphicsEngine::getInstance()->getResolutionX()/2, GraphicsEngine::getInstance()->getResolutionY()/2);
@@ -299,5 +310,5 @@
    }
 
-  if( this->bLeft /* > -this->getRelCoor().z*2*/)
+  if( this->bLeft/* > -this->getRelCoor().z*2*/)
   {
     this->shiftDir(Quaternion(time, Vector(0,1,0)));
@@ -316,4 +327,5 @@
     //rotVal += .4;
   }
+
 
   if( this->bRollL /* > -this->getRelCoor().z*2*/)
Index: trunk/src/world_entities/space_ships/space_ship.h
===================================================================
--- trunk/src/world_entities/space_ships/space_ship.h	(revision 6033)
+++ trunk/src/world_entities/space_ships/space_ship.h	(revision 6034)
@@ -1,3 +1,2 @@
-
 /*!
  * @file space_ship.h
@@ -69,4 +68,6 @@
     float                 acceleration;       //!< the acceleration of the player.
 
+    float                 airViscosity;
+
 };
 
