Index: branches/spaceshipcontrol/src/world_entities/space_ships/helicopter.cc
===================================================================
--- branches/spaceshipcontrol/src/world_entities/space_ships/helicopter.cc	(revision 6050)
+++ branches/spaceshipcontrol/src/world_entities/space_ships/helicopter.cc	(revision 6051)
@@ -99,5 +99,5 @@
 
 /**
- * initializes a Spaceship
+ * initializes a Helicopter
  */
 void Helicopter::init()
@@ -240,5 +240,4 @@
 void Helicopter::tick (float time)
 {
-     cycle += time;
   // spaceship controlled movement
   this->calculateVelocity(time);
@@ -246,10 +245,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);
@@ -269,6 +277,6 @@
 {
   Vector accel(0.0, 0.0, 0.0);
-  //Vector rot(0.0, 0.0, 0.0);
-  //float rotVal = 0.0;
+  Vector rot(0.0, 0.0, 0.0);
+  float rotVal = 0.0;
   /* FIXME: calculating the direction and orthDirection every timeSlice is redundant! save it somewhere */
   /* calculate the direction in which the craft is heading  */
@@ -278,4 +286,6 @@
      //this->shiftCoor(this->getAbsDirX());
       accel += (this->getAbsDirX())*2;
+      rot += Vector (0,0,1);
+      rotVal -= .4;
    }
 
@@ -284,46 +294,48 @@
      //this->shiftCoor((this->getAbsDirX())*-1);
      accel -= (this->getAbsDirX())*2;
+     rot += Vector (0,0,1);
+     rotVal += .4;
    }
 
   if( this->bLeft /* > -this->getRelCoor().z*2*/)
   {
-    this->shiftDir(Quaternion(time, Vector(0,1,0)));
-//    accel -= rightDirection;
+    //this->shiftDir(Quaternion(time, Vector(0,1,0)));
+    accel -= (this->getAbsDirZ());
+    //velocityDir.normalize();
+    rot +=Vector(1,0,0);
+    rotVal -= .2;
+  }
+  if( this->bRight /* > this->getRelCoor().z*2*/)
+  {
+    //this->shiftDir(Quaternion(-time, Vector(0,1,0)));
+
+    accel += (this->getAbsDirZ());
+    //velocityDir.normalize();
+    rot += Vector(1,0,0);
+    rotVal += .2;
+  }
+
+  if( this->bRollL /* > -this->getRelCoor().z*2*/)
+  {
+    this->shiftDir(Quaternion(-time, Vector(1,0,0)));
+    //accel -= rightDirection;
     //velocityDir.normalize();
     //rot +=Vector(1,0,0);
     //rotVal -= .4;
   }
-  if( this->bRight /* > this->getRelCoor().z*2*/)
-  {
-    this->shiftDir(Quaternion(-time, Vector(0,1,0)));
-
-    //    accel += rightDirection;
+  if( this->bRollR /* > this->getRelCoor().z*2*/)
+  {
+    this->shiftDir(Quaternion(time, Vector(1,0,0)));
+
+    //accel += rightDirection;
     //velocityDir.normalize();
     //rot += Vector(1,0,0);
     //rotVal += .4;
   }
-
-  if( this->bRollL /* > -this->getRelCoor().z*2*/)
-  {
-    this->shiftDir(Quaternion(-time, Vector(1,0,0)));
-//    accel -= rightDirection;
-    //velocityDir.normalize();
-    //rot +=Vector(1,0,0);
-    //rotVal -= .4;
-  }
-  if( this->bRollR /* > this->getRelCoor().z*2*/)
-  {
-    this->shiftDir(Quaternion(time, Vector(1,0,0)));
-
-    //    accel += rightDirection;
-    //velocityDir.normalize();
-    //rot += Vector(1,0,0);
-    //rotVal += .4;
-  }
   if (this->bAscend )
   {
-    this->shiftDir(Quaternion(time, Vector(0,0,1)));
-
-//    accel += upDirection;
+    //this->shiftDir(Quaternion(time, Vector(0,0,1)));
+
+    accel += (this->getAbsDirY())*2;
     //velocityDir.normalize();
     //rot += Vector(0,0,1);
@@ -332,7 +344,7 @@
   if (this->bDescend )
   {
-    this->shiftDir(Quaternion(-time, Vector(0,0,1)));
-
-    //    accel -= upDirection;
+    //this->shiftDir(Quaternion(-time, Vector(0,0,1)));
+
+    accel -= (this->getAbsDirY())*2;
     //velocityDir.normalize();
     //rot += Vector(0,0,1);
@@ -341,6 +353,6 @@
 
   velocity += accel;
-  //rot.normalize();
-  //this->setRelDirSoft(Quaternion(rotVal, rot), 5);
+  rot.normalize();
+  this->setRelDirSoft(Quaternion(rotVal, rot), 5);
 }
 
@@ -373,7 +385,7 @@
 
   if( event.type == SDLK_a)
-      this->bRollL = event.bPressed;
+      this->bLeft = event.bPressed;
   else if( event.type == SDLK_d)
-      this->bRollR = event.bPressed;
+      this->bRight = event.bPressed;
   else if( event.type == KeyMapper::PEV_FIRE1)
       this->bFire = event.bPressed;
@@ -382,5 +394,8 @@
   else if ( event.type == KeyMapper::PEV_PREVIOUS_WEAPON && event.bPressed)
     this->getWeaponManager()->previousWeaponConfig();
-
+  else if( event.type == SDLK_e)
+    this->bAscend = event.bPressed; //this->shiftCoor(0,.1,0);
+  else if( event.type == SDLK_c)
+    this->bDescend = event.bPressed; //this->shiftCoor(0,-.1,0);
   else if( event.type == SDLK_w)
     this->bUp = event.bPressed; //this->shiftCoor(0,.1,0);
Index: branches/spaceshipcontrol/src/world_entities/space_ships/helicopter.h
===================================================================
--- branches/spaceshipcontrol/src/world_entities/space_ships/helicopter.h	(revision 6050)
+++ branches/spaceshipcontrol/src/world_entities/space_ships/helicopter.h	(revision 6051)
@@ -65,4 +65,6 @@
     float                 travelSpeed;        //!< the current speed of the player (to make soft movement)
     float                 acceleration;       //!< the acceleration of the player.
+    
+    float                 airViscosity;
 
 };
Index: branches/spaceshipcontrol/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/spaceshipcontrol/src/world_entities/space_ships/space_ship.cc	(revision 6050)
+++ branches/spaceshipcontrol/src/world_entities/space_ships/space_ship.cc	(revision 6051)
@@ -292,5 +292,7 @@
 {
   Vector accel(0.0, 0.0, 0.0);
-  //Vector rot(0.0, 0.0, 0.0);
+  /*
+  Vector rot(0.0, 0.0, 0.0); // wird benötigt für Helicopter
+  */
   //float rotVal = 0.0;
   /* FIXME: calculating the direction and orthDirection every timeSlice is redundant! save it somewhere */
@@ -301,4 +303,9 @@
      //this->shiftCoor(this->getAbsDirX());
       accel += (this->getAbsDirX())*2;
+      
+      /* Heli-Steuerung
+         accel += (this->getAbsDirX()*2;
+         if(
+      */
    }
 
