Index: branches/presentation/src/story_entities/game_world.cc
===================================================================
--- branches/presentation/src/story_entities/game_world.cc	(revision 9073)
+++ branches/presentation/src/story_entities/game_world.cc	(revision 9074)
@@ -336,9 +336,9 @@
       this->dataTank->localPlayer->getPlayable()->setPlaymode(playmode))
   {
-    PRINTF(3)("Set Playmode to %d:%s\n", playmode, Playable::playmodeToString(playmode).c_str());
+    PRINTF(4)("Set Playmode to %d:%s\n", playmode, Playable::playmodeToString(playmode).c_str());
   }
   else
   {
-    PRINTF(1)("Unable to set Playmode %d:'%s'\n", playmode, Playable::playmodeToString(playmode).c_str());
+    PRINTF(2)("Unable to set Playmode %d:'%s'\n", playmode, Playable::playmodeToString(playmode).c_str());
   }
 }
Index: branches/presentation/src/world_entities/playable.cc
===================================================================
--- branches/presentation/src/world_entities/playable.cc	(revision 9073)
+++ branches/presentation/src/world_entities/playable.cc	(revision 9074)
@@ -268,4 +268,5 @@
 
     this->enter();
+    this->setPlaymode(this->playmode);
     return true;
   }
Index: branches/presentation/src/world_entities/space_ships/spacecraft_2d.cc
===================================================================
--- branches/presentation/src/world_entities/space_ships/spacecraft_2d.cc	(revision 9073)
+++ branches/presentation/src/world_entities/space_ships/spacecraft_2d.cc	(revision 9074)
@@ -36,4 +36,11 @@
 CREATE_FACTORY(Spacecraft2D, CL_SPACECRAFT_2D);
 
+/**
+ *  destructs the spacecraft_2d, deletes alocated memory
+ */
+Spacecraft2D::~Spacecraft2D ()
+{
+  this->setPlayer(NULL);
+}
 
 /**
@@ -86,12 +93,4 @@
 
 /**
- *  destructs the spacecraft_2d, deletes alocated memory
- */
-Spacecraft2D::~Spacecraft2D ()
-{
-  this->setPlayer(NULL);
-}
-
-/**
  * @brief initializes a Spacecraft2D
  */
@@ -101,6 +100,5 @@
   this->setClassID(CL_SPACECRAFT_2D, "Spacecraft2D");
 
-  this->setSupportedPlaymodes(Playable::Full3D | Playable::Horizontal);
-
+  this->setSupportedPlaymodes(Playable::Full3D | Playable::Horizontal );
 
   bForward = bBackward = bLeft = bRight = false;
@@ -110,16 +108,16 @@
   this->rotation = 0.0f;
   this->acceleration = 10.0f;
-  this->altitude = 0.0f;
+  this->airFriction = 2.0f;
 
   this->setHealthMax(100);
   this->setHealth(100);
 
-
+  this->travelNode = new PNode();
   // camera - issue
-  this->travelNode.addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
+  this->cameraNode.addNodeFlags(PNODE_PROHIBIT_DELETE_WITH_PARENT);
+  this->cameraNode.addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
   //this->cameraNode.setParentMode(PNODE_ROTATE_MOVEMENT);
   //this->cameraNode.setParent(this);
 
-  // rotors
   // PARTICLES
   this->burstEmitter = new DotEmitter(200, 5.0, .01);
@@ -128,5 +126,4 @@
   this->burstEmitter->setRelDir(Quaternion(-M_PI_2, Vector(0,0,1)));
   this->burstEmitter->setName("Spacecraft2D_Burst_emitter_Left");
-
 
   this->burstSystem = new SpriteParticles(1000);
@@ -150,6 +147,4 @@
   this->registerEvent(KeyMapper::PEV_LEFT);
   this->registerEvent(KeyMapper::PEV_RIGHT);
-  this->registerEvent(KeyMapper::PEV_UP);
-  this->registerEvent(KeyMapper::PEV_DOWN);
   this->registerEvent(KeyMapper::PEV_FIRE1);
   this->registerEvent(KeyMapper::PEV_NEXT_WEAPON);
@@ -178,7 +173,7 @@
   this->getWeaponManager().setSlotDirection(4, Quaternion(24/180 * M_PI, Vector(1,0,0)));
 
-  this->travelNode.setRelCoor(0,0,0);
-  //this->getWeaponManager().getFixedTarget()->setParent(&this->cameraNode);
-  //this->getWeaponManager().getFixedTarget()->setRelCoor(1000,0,0);
+  this->cameraNode.setRelCoor(1,5,0);
+  this->getWeaponManager().getFixedTarget()->setParent(&this->cameraNode);
+  this->getWeaponManager().getFixedTarget()->setRelCoor(1000,0,0);
 
   registerVar( new SynchronizeableBool( &bForward, &bForward, "bForward", PERMISSION_OWNER ) );
@@ -205,26 +200,7 @@
 }
 
-void Spacecraft2D::setTravelDirecton(const Quaternion& rot, float speed)
-{
-  this->setPlayDirection(rot, speed);
-}
-
-void Spacecraft2D::setTravelSpeed(float travelSpeed)
-{
-  this->travelSpeed = travelSpeed;
-}
-
-
-
 void Spacecraft2D::enter()
 {
   dynamic_cast<Element2D*>(this->getWeaponManager().getFixedTarget())->setVisibility( true);
-
-  if (State::getCameraNode != NULL)
-  {
-    State::getCameraNode()->setParentSoft(&this->travelNode);
-    State::getCameraNode()->setRelCoorSoft(-10, 50,0);
-    State::getCameraTargetNode()->setParentSoft(&this->travelNode);
-  }
 }
 
@@ -235,4 +211,38 @@
 
 }
+
+
+void Spacecraft2D::enterPlaymode(Playable::Playmode playmode)
+{
+  switch(playmode)
+  {
+    case Playable::Full3D:
+      if (State::getCameraNode != NULL)
+      {
+        State::getCameraNode()->setParentSoft(&this->cameraNode);
+        State::getCameraNode()->setRelCoorSoft(-10, 0,0);
+        State::getCameraTargetNode()->setParentSoft(&this->cameraNode);
+      }
+      break;
+
+
+    case Playable::Horizontal:
+      if (State::getCameraNode != NULL)
+      {
+        this->travelNode->setAbsCoor(this->getAbsCoor());
+        this->travelNode->updateNode(0.01f);
+        this->setParentSoft(this->travelNode);
+
+        State::getCameraNode()->setParentSoft(this->travelNode);
+        State::getCameraNode()->setRelCoorSoft(-10, 50,0);
+        State::getCameraTargetNode()->setParentSoft(this->travelNode);
+      }
+      break;
+
+    default:
+      PRINTF(2)("Playmode %s Not Implemented in %s\n", Playable::playmodeToString(this->getPlaymode()).c_str(), this->getClassName());
+  }
+}
+
 
 
@@ -277,6 +287,6 @@
 
   // TRYING TO FIX PNode.
-  //this->travelNode.setAbsCoorSoft(this->getAbsCoor() + Vector(0.0f, 5.0f, 0.0f), 30.0f);
-  //this->travelNode.setRelDirSoft(this->getAbsDir(), 30.0f);
+  this->cameraNode.setAbsCoorSoft(this->getAbsCoor() + Vector(0.0f, 5.0f, 0.0f), 30.0f);
+  this->cameraNode.setRelDirSoft(this->getAbsDir(), 30.0f);
 }
 
@@ -307,5 +317,4 @@
     accel += Vector(0, 0, this->acceleration);
   }
-
 
   switch(this->getPlaymode())
@@ -316,6 +325,8 @@
 
         // this is the air friction (necessary for a smooth control)
-
-        this->velocity += (accelerationDir)* dt;
+        Vector damping = (this->velocity * this->airFriction);
+
+
+        this->velocity += (accelerationDir - damping)* dt;
         this->shiftCoor (this->velocity * dt);
 
@@ -332,5 +343,4 @@
 
         this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
-
       }
       break;
@@ -343,7 +353,8 @@
 
         // this is the air friction (necessary for a smooth control)
-
-
-        this->velocity += (accelerationDir )* dt;
+        Vector damping = (this->velocity * this->airFriction);
+
+
+        this->velocity += (accelerationDir - damping)* dt;
         this->shiftCoor (this->velocity * dt);
 
@@ -352,5 +363,6 @@
         {
           float maxRot = 10.0 * dt;
-          if (unlikely(this->rotation > 0.01 || this->rotation < 0.01)) this->rotation /=1.5;
+          if (unlikely(this->rotation > maxRot)) this->rotation = maxRot;
+          if (unlikely(this->rotation < -maxRot)) this->rotation = -maxRot;
           this->direction *= Quaternion(-M_PI/4.0*this->rotation, Vector(0,1,0));
 
@@ -363,5 +375,5 @@
 
     default:
-      PRINTF(2)("Playmode %s Not Implemented\n", Playable::playmodeToString(this->getPlaymode()).c_str());
+      PRINTF(2)("Playmode %s Not Implemented in %s\n", Playable::playmodeToString(this->getPlaymode()).c_str(), this->getClassName());
   }
 }
@@ -395,6 +407,5 @@
 
     // rotate the Player around the y-axis
-    if (this->getPlaymode() == Playable::Full3D)
-      this->rotation += xMouse;
+    this->rotation += xMouse;
 
     this->cameraLook += yMouse;
Index: branches/presentation/src/world_entities/space_ships/spacecraft_2d.h
===================================================================
--- branches/presentation/src/world_entities/space_ships/spacecraft_2d.h	(revision 9073)
+++ branches/presentation/src/world_entities/space_ships/spacecraft_2d.h	(revision 9074)
@@ -23,11 +23,6 @@
     virtual void loadParams(const TiXmlElement* root);
     virtual void setPlayDirection(const Quaternion& rot, float speed = 0.0f);
-    void setTravelDirecton(const Quaternion& rot, float speed = 0.0);
-    void setTravelSpeed(float travelSpeed);
-
     virtual void enter();
     virtual void leave();
-
-
 
     virtual void postSpawn();
@@ -39,4 +34,7 @@
 
     virtual void process(const Event &event);
+
+  protected:
+    virtual void enterPlaymode(Playable::Playmode playmode);
 
   private:
@@ -54,8 +52,7 @@
 
 
+    PNode*                travelNode;
 
-    PNode                 travelNode;
-    float                 travelSpeed;
-
+    PNode                 cameraNode;
     float                 cameraLook;
     float                 rotation;
@@ -63,8 +60,9 @@
    // Vector                velocity;           //!< the velocity of the Spacecraft2D.
     Quaternion            direction;          //!< the direction of the Spacecraft2D.
+    float                 travelSpeed;        //!< the current speed of the Hove (to make soft movement)
     float                 acceleration;       //!< the acceleration of the Spacecraft2D.
-    float                 maxSpeed;           //!< The Maximal speed of the Spacecraft2D.
+    float                 airFriction;        //!< AirFriction.
 
-    float                 altitude;           //!< The height in the Entity.
+    float                 airViscosity;
 
     ParticleEmitter*      burstEmitter;
