Index: branches/playability/src/lib/math/curve.cc
===================================================================
--- branches/playability/src/lib/math/curve.cc	(revision 10291)
+++ branches/playability/src/lib/math/curve.cc	(revision 10297)
@@ -142,4 +142,19 @@
     tmpNode = tmpNode->next;
   return tmpNode->position;
+}
+
+/**
+ * This function returns an approximation of the length of the curve
+ *
+*/
+float Curve::getLength()
+{
+      float length = 0;
+      PathNode* tmpNode = this->firstNode;
+      for(int i = 1; i < this->nodeCount; i++)
+      {
+              length += Vector(tmpNode->next->position - tmpNode->position).len();
+      }
+      return length;
 }
 
Index: branches/playability/src/lib/math/curve.h
===================================================================
--- branches/playability/src/lib/math/curve.h	(revision 10291)
+++ branches/playability/src/lib/math/curve.h	(revision 10297)
@@ -47,4 +47,5 @@
   /** @returns the directional Curve */
   Curve* getDirCurve() const { return this->dirCurve; };
+  float getLength();
 
   /** @param t the value on the curve [0-1] @returns Vector to the position */
Index: branches/playability/src/util/track/track.cc
===================================================================
--- branches/playability/src/util/track/track.cc	(revision 10291)
+++ branches/playability/src/util/track/track.cc	(revision 10297)
@@ -65,6 +65,6 @@
   this->curveType = CURVE_BEZIER;
 //  this->startingTime = 0;
-  this->duration = 10;
-  this->endTime = 10;
+  this->duration = 20;
+  this->endTime = 20;
   this->width = 10;
   this->curve = new BezierCurve();
@@ -88,4 +88,6 @@
            LoadParam_CYCLE(element, "addPoint", this, Track, addPoint)
              .describe("Adds a new Point to the currently selected TrackElement");
+           LoadParam_CYCLE(element, "speed", this, Track, setSpeed)
+             .describe("Sets speed of traveling");
 
      }
@@ -116,5 +118,17 @@
    if( this->nodeCount == 0) this->trackNode->setAbsCoor(newPoint);
    this->nodeCount++;
-   PRINTF(4)("Point added to curve %d\n");
+   // PRINTF(0)("Point added to curve\n");
+}
+
+/**
+ * This function sets the speed of the trackNode by altering the duration
+ * of the time the trackNode travels on the whole track. This is bad because
+ * the speed depends on the length of the curve. (by getting the curve's length
+ * this function will make a lot more sense)
+ */
+void Track::setSpeed(float speed)
+{
+     this->duration = this->duration/speed;
+     
 }
 
@@ -211,5 +225,5 @@
        this->trackNode->shiftCoor(tmp - this->trackNode->getAbsCoor());
        // set direction and roll angle of trackNode
-       // this->trackNode->setAbsDir(quat);
+       this->trackNode->setAbsDir(quat);
      }
 }
@@ -230,5 +244,5 @@
    eventually this will all be packed into a gl-list.
 */
-void Track::drawGraph(float dt) const
+/*void Track::drawGraph(float dt) const
 {
       glBegin(GL_LINE_STRIP);
@@ -240,3 +254,3 @@
           }
       glEnd();
-}
+}*/
Index: branches/playability/src/util/track/track.h
===================================================================
--- branches/playability/src/util/track/track.h	(revision 10291)
+++ branches/playability/src/util/track/track.h	(revision 10297)
@@ -25,4 +25,5 @@
    void addPoint(float x, float y, float z);
    void addPointV(Vector newPoint);
+   void setSpeed(float speed);
 
    //void finalize();
@@ -33,5 +34,5 @@
    PNode* getTrackNode();
    
-   void drawGraph(float dt) const;
+//   void drawGraph(float dt) const;
       
    //float                 startingTime;         //!< The time at which this Track begins.
Index: branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10291)
+++ branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10297)
@@ -843,4 +843,7 @@
         this->travelNode->updateNode(0.01f);
         this->isTravelDistanceInit = false;
+        
+        if(this->entityTrack)
+           this->travelNode->setParent(this->entityTrack->getTrackNode());
 
         this->setParent(this->travelNode);
@@ -1027,5 +1030,6 @@
 
     //this moves camera and ship along the travel path.
-    this->travelNode->shiftCoor(Vector(this->cameraSpeed * dt, 0, 0));
+    if(!this->entityTrack) 
+       this->travelNode->shiftCoor(Vector(this->cameraSpeed * dt, 0, 0));
 
     break;
Index: branches/playability/src/world_entities/world_entity.cc
===================================================================
--- branches/playability/src/world_entities/world_entity.cc	(revision 10291)
+++ branches/playability/src/world_entities/world_entity.cc	(revision 10297)
@@ -683,6 +683,6 @@
     }
     
-    if (this->entityTrack)
-       this->entityTrack->drawGraph(0.02);
+    //if (this->entityTrack)
+       //this->entityTrack->drawGraph(0.02);
 
     //     if( this->aabbNode != NULL)
