Index: trunk/src/world_entities/space_ships/turbine_hover.cc
===================================================================
--- trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 7337)
+++ trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 7339)
@@ -46,5 +46,5 @@
 
 /**
- * loads a TurbineHover information from a specified file.
+ * @brief loads a TurbineHover information from a specified file.
  * @param fileName the name of the File to load the turbine_hover from (absolute path)
  */
@@ -64,5 +64,5 @@
 
 /**
- *  creates a new Spaceship from Xml Data
+ * @brief creates a new Spaceship from Xml Data
  * @param root the xml element containing spaceship data
 
@@ -96,5 +96,5 @@
 
 /**
- * initializes a TurbineHover
+ * @brief initializes a TurbineHover
  */
 void TurbineHover::init()
@@ -102,4 +102,6 @@
   //  this->setRelDir(Quaternion(M_PI, Vector(1,0,0)));
   this->setClassID(CL_TURBINE_HOVER, "TurbineHover");
+
+  this->setSupportedPlaymodes(Playable::Full3D | Playable::Horizontal);
 
   this->loadModel("models/ships/hoverglider_wing.obj", 1.0f, 3);
@@ -275,5 +277,5 @@
 void TurbineHover::tick (float dt)
 {
-//  this->debugNode(1);
+  //  this->debugNode(1);
   Playable::tick(dt);
 
@@ -324,31 +326,72 @@
   }
 
-  Vector accelerationDir = this->getAbsDir().apply(accel * this->acceleration);
-
-  // this is the air friction (necessary for a smooth control)
-  Vector damping = (this->velocity * this->airFriction);
-
-
-  this->velocity += (accelerationDir - damping)* dt;
-  this->shiftCoor (this->velocity * dt);
-
-  // limit the maximum rotation speed.
-  if (this->rotation != 0.0f)
-  {
-    float maxRot = 10.0 * dt;
-    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));
-
-    this->rotation = 0.0f;
-  }
-
-  this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
-
-  this->wingNodeLeft.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
-  this->rotorNodeLeft.setRelDirSoft(Quaternion(-accel.x * .07+this->rotation + cameraLook, Vector(0,0,1)), 5);
-
-  this->wingNodeRight.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
-  this->rotorNodeRight.setRelDirSoft(Quaternion(-accel.x*.07 -this->rotation + cameraLook, Vector(0,0,1)), 5);
+  switch(this->getPlaymode())
+  {
+    case Playable::Full3D:
+      {
+        Vector accelerationDir = this->getAbsDir().apply(accel * this->acceleration);
+
+        // this is the air friction (necessary for a smooth control)
+        Vector damping = (this->velocity * this->airFriction);
+
+
+        this->velocity += (accelerationDir - damping)* dt;
+        this->shiftCoor (this->velocity * dt);
+
+        // limit the maximum rotation speed.
+        if (this->rotation != 0.0f)
+        {
+          float maxRot = 10.0 * dt;
+          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));
+
+          this->rotation = 0.0f;
+        }
+
+        this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
+
+        this->wingNodeLeft.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
+        this->rotorNodeLeft.setRelDirSoft(Quaternion(-accel.x * .07+this->rotation + cameraLook, Vector(0,0,1)), 5);
+
+        this->wingNodeRight.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
+        this->rotorNodeRight.setRelDirSoft(Quaternion(-accel.x*.07 -this->rotation + cameraLook, Vector(0,0,1)), 5);
+      }
+      break;
+
+    case Playable::Horizontal:
+      {
+        accel.z = 0.0;
+        Vector accelerationDir = this->getAbsDir().apply(accel * this->acceleration);
+        accelerationDir.z = 0.0;
+
+        // this is the air friction (necessary for a smooth control)
+        Vector damping = (this->velocity * this->airFriction);
+
+
+        this->velocity += (accelerationDir - damping)* dt;
+        this->shiftCoor (this->velocity * dt);
+
+        // limit the maximum rotation speed.
+        if (this->rotation != 0.0f)
+        {
+          float maxRot = 10.0 * dt;
+          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));
+
+          this->rotation = 0.0f;
+        }
+
+        this->setRelDirSoft(this->direction, 5);
+
+        this->wingNodeLeft.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
+        this->rotorNodeLeft.setRelDirSoft(Quaternion(-accel.x * .07+this->rotation, Vector(0,0,1)), 5);
+
+        this->wingNodeRight.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
+        this->rotorNodeRight.setRelDirSoft(Quaternion(-accel.x*.07 -this->rotation, Vector(0,0,1)), 5);
+      }
+      break;
+  }
 }
 
