Index: /branches/playability/src/util/track/track.cc
===================================================================
--- /branches/playability/src/util/track/track.cc	(revision 10095)
+++ /branches/playability/src/util/track/track.cc	(revision 10096)
@@ -59,7 +59,7 @@
 {
   this->curveType = CURVE_BEZIER;
-  this->startingTime = 0;
+//  this->startingTime = 0;
   this->duration = 10;
-  this->endTime = 1;
+  this->endTime = 10;
   this->width = 10;
   this->curve = new BezierCurve();
@@ -90,5 +90,5 @@
 
 /**
- *
+ * This function adds a point with its coordinates to the track
  * @param x
  * @param y
@@ -102,5 +102,5 @@
 
 /**
- *
+ * This function adds a point to the track as a vector
  * @param newPoint
  */
@@ -112,5 +112,5 @@
 
 /**
- *
+ * We probably doesn't even need this
  */
 void Track::finalize()
@@ -160,10 +160,10 @@
 Vector Track::calcPos() const
 {
-  return this->curve->calcPos((this->localTime-this->startingTime)/this->duration);
+  return this->curve->calcPos(this->localTime/this->duration);
 }
 
 Vector Track::calcDir() const
 {
-  return this->curve->calcDir((this->localTime - this->startingTime)/this->duration);
+  return this->curve->calcDir(this->localTime/this->duration);
 }
 
@@ -174,5 +174,5 @@
 //     this->jumpTo(this->localTime);
 //   if (this->localTime <= this->maxTime)
-//     this->localTime += dt;
+     this->localTime += dt;
 //   if (this->localTime > this->currentTrackElem->endTime
 //       && this->currentTrackElem->children)
@@ -190,16 +190,18 @@
 //         }
 //     }
-//   if (this->bindSlave)
-//     {
-//       Vector tmp = this->calcPos();
-//       Quaternion quat = Quaternion(this->calcDir(), Vector(this->currentTrackElem->curve->calcAcc((localTime-this->currentTrackElem->startingTime)/this->currentTrackElem->duration).x,1,this->currentTrackElem->curve->calcAcc((localTime-this->currentTrackElem->startingTime)/this->currentTrackElem->duration).z));
-//
-//       Vector v(0.0, 1.0, 0.0);
-//       Quaternion q(-PI/2, v);
-//       quat = quat * q;
-//
-//       this->bindSlave->setAbsCoor(tmp);
-//       this->bindSlave->setAbsDir(quat);
-//     }
+   if (this->trackNode)
+     {
+       Vector tmp = this->calcPos();
+       Quaternion quat = Quaternion(this->calcDir(), Vector(this->curve->calcAcc(this->localTime/this->duration).x,1,this->curve->calcAcc(this->localTime/this->duration).z));
+
+       Vector v(0.0, 1.0, 0.0);
+       Quaternion q(-PI/2, v);
+       quat = quat * q;
+
+       // move trackNode of the track
+       this->trackNode->setAbsCoor(tmp);
+       // set direction and roll angle of trackNode
+       this->trackNode->setAbsDir(quat);
+     }
 }
 
Index: /branches/playability/src/util/track/track.h
===================================================================
--- /branches/playability/src/util/track/track.h	(revision 10095)
+++ /branches/playability/src/util/track/track.h	(revision 10096)
@@ -33,5 +33,5 @@
    PNode* getTrackNode();
       
-   float                 startingTime;         //!< The time at which this Track begins.
+   //float                 startingTime;         //!< The time at which this Track begins.
    float                 duration;             //!< The time used to cross this Track (curve).
    float                 endTime;              //!< The time at which this Track ends.
Index: /branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- /branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10095)
+++ /branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10096)
@@ -55,4 +55,6 @@
 #include "util/loading/load_param.h"
 #include "time.h"
+
+#include "track/track.h"
 
 
@@ -477,4 +479,8 @@
   else
     this->secWeaponMan.releaseFire();
+    
+  // Tracktick
+  if(this->entityTrack)
+    this->entityTrack->tick(time);
 
 
@@ -760,10 +766,12 @@
         this->travelNode->updateNode(0.01f);
 
-        this->setParent(this->travelNode);
+        //this->setParent(this->travelNode);
         this->setRelCoor(0,0,0);
 
-        State::getCameraNode()->setParentSoft(this->travelNode);
+        //State::getCameraNode()->setParentSoft(this->travelNode);
+        State::getCameraNode()->setParentSoft(this);
         State::getCameraNode()->setRelCoorSoft(-0.01, 40, 0);
-        State::getCameraTargetNode()->setParentSoft(this->travelNode);
+        //State::getCameraTargetNode()->setParentSoft(this->travelNode);
+        State::getCameraTargetNode()->setParentSoft(this);
         State::getCameraTargetNode()->setRelCoorSoft(0,0,0);
 
Index: /branches/playability/src/world_entities/world_entity.cc
===================================================================
--- /branches/playability/src/world_entities/world_entity.cc	(revision 10095)
+++ /branches/playability/src/world_entities/world_entity.cc	(revision 10096)
@@ -168,4 +168,8 @@
 void WorldEntity::addTrack(const TiXmlElement* root)
 {
+     
+  this->entityTrack = new Track();
+  this->setParent(this->entityTrack->getTrackNode());
+  this->entityTrack->getTrackNode()->setParentMode(PNODE_ALL);
   LOAD_PARAM_START_CYCLE(root, element);
   {
@@ -174,4 +178,6 @@
   }
   LOAD_PARAM_END_CYCLE(element);
+  
+
 }
 
@@ -635,5 +641,6 @@
 */
 void WorldEntity::tick(float time)
-{}
+{
+}
 
 
Index: /branches/playability/src/world_entities/world_entity.h
===================================================================
--- /branches/playability/src/world_entities/world_entity.h	(revision 10095)
+++ /branches/playability/src/world_entities/world_entity.h	(revision 10096)
@@ -221,9 +221,7 @@
   bool                    bOnGround;                       //!< true if this entity is standing on the ground
 
-
-  Track*                  entityTrack;                     //!< this is the track this entity follows (or NULL if none)
-
 protected:
   Vector                  velocity;                        //!< speed of the entity
+  Track*                  entityTrack;                     //!< this is the track this entity follows (or NULL if none)
 
 };
