Index: branches/playability/src/util/track/track.cc
===================================================================
--- branches/playability/src/util/track/track.cc	(revision 10085)
+++ branches/playability/src/util/track/track.cc	(revision 10088)
@@ -13,20 +13,25 @@
    This is anohter installment of the infamous track system. It serves for
    temporary use only and is mainly a slimmed version of the old track.
-   
+
    The track is used to steer the spaceship. In this case the track will have
    to control a PNode. The spaceship will be able to fly around this node.
    The camera will always be focused on that point.
-   
+
    As we do this we have exactly the verticalscroller feeling we want.
-   
+
    main-programmer: Benjamin Knecht
 */
 
 #include "util/loading/load_param.h"
-
-#include "class_id_DEPRECATED.h"
+#include "track/track.h"
+
+#include "track/track_manager.h"
+#include "p_node.h"
+
+#include "debug.h"
 
 ObjectListDefinition(Track);
-CREATE_FACTORY(Track);
+// CREATE_FACTORY(Track);
+
 
 /**
@@ -35,14 +40,38 @@
 Track::Track()
 {
-      this->firstTrackElem = new TrackElement();
-      this->firstTrackElem->ID = 1;
-      this->firstTrackElem->setName("root");
-      
-      this->currentTrackElem = firstTrackElem;
-      
-      this->curveType = CURVE_BEZIER;
-      this->trackElemCount = 1;
-      
-      this->trackNode = new PNode(PNode::getNullParent(), PNODE_ALL);
+  this->init();
+}
+
+
+/**
+ * this is a constructor for use with the xml loading file
+ * @param root xml root element for this object
+ */
+Track::Track(const TiXmlElement* root)
+{
+  this->init();
+}
+
+
+/**
+ * initializes this class
+ */
+void Track::init()
+{
+  // resetting all elements
+  this->firstTrackElem = NULL;
+
+
+  // make a debug track
+  this->firstTrackElem = new TrackElement();
+  this->firstTrackElem->ID = 1;
+  this->firstTrackElem->setName("root");
+
+  this->currentTrackElem = firstTrackElem;
+
+  this->curveType = CURVE_BEZIER;
+  this->trackElemCount = 1;
+
+  this->trackNode = new PNode(PNode::getNullParent(), PNODE_ALL);
 }
 
@@ -52,6 +81,8 @@
 Track::~Track()
 {
-  delete this->firstTrackElem;
-}
+  if( this->firstTrackElem)
+    delete this->firstTrackElem;
+}
+
 
 void Track::loadParams(const TiXmlElement* root)
@@ -61,9 +92,17 @@
            LoadParam_CYCLE(element, "Point", this, Track, addPoint)
              .describe("Adds a new Point to the currently selected TrackElement");
-           
+
      }
      LOAD_PARAM_END_CYCLE(element);
 }
 
+
+
+/**
+ *
+ * @param x
+ * @param y
+ * @param z
+ */
 void Track::addPoint(float x, float y, float z)
 {
@@ -71,50 +110,61 @@
 }
 
+
+/**
+ *
+ * @param newPoint
+ */
 void Track::addPoint(Vector newPoint)
 {
-  if (this->currentTrackElem->isFresh)
-    {
-      this->setCurveType(CURVE_BEZIER, this->currentTrackElem);
-      this->currentTrackElem->isFresh = false;
-    }
-  trackElem->curve->addNode(newPoint);
-  trackElem->nodeCount++;
-}
-
+//   if (this->currentTrackElem->isFresh)
+//     {
+//       this->setCurveType(CURVE_BEZIER, this->currentTrackElem);
+//       this->currentTrackElem->isFresh = false;
+//     }
+//   trackElem->curve->addNode(newPoint);
+//   trackElem->nodeCount++;
+}
+
+/**
+ *
+ */
 void Track::finalize()
 {
-  for (int i = 1; i<= trackElemCount ;i++)
-    {
-      TrackElement* tmpElem = this->firstTrackElem->findByID(i);
-      if( tmpElem->childCount > 0)
-        {
-          tIterator<TrackElement>* iterator = tmpElem->children->getIterator();
-          TrackElement* enumElem = iterator->firstElement();
-          //TrackElement* enumElem = tmpElem->children->enumerate();
-          while (enumElem)
-            {
-
-              // c1-continuity
-              enumElem->curve->addNode(enumElem->curve->getNode(0) +
-                                                   ((enumElem->curve->getNode(0) -
-                                                    tmpElem->curve->getNode(tmpElem->curve->getNodeCount()-1))
-                                                    ),2);
-              enumElem->nodeCount++;
-              // c2-continuity
-              enumElem->curve->addNode((tmpElem->curve->getNode(tmpElem->curve->getNodeCount())-
-                                                    tmpElem->curve->getNode(tmpElem->curve->getNodeCount()-1)) * 4 +
-                                                   tmpElem->curve->getNode(tmpElem->curve->getNodeCount()-2), 3);
-              enumElem->nodeCount++;
-              PRINTF(5)("accelerations: %d-in: count: %d, %f, %f, %f\n                  %d-out: count: %d %f, %f, %f\n",
-                     tmpElem->ID, tmpElem->nodeCount,
-                     tmpElem->curve->calcAcc(0.999).x, tmpElem->curve->calcAcc(0.999).y, tmpElem->curve->calcAcc(0.999).z,
-                     enumElem->ID, enumElem->nodeCount,
-                     enumElem->curve->calcAcc(0).x, enumElem->curve->calcAcc(0).y, enumElem->curve->calcAcc(0).z);
-
-              enumElem = iterator->nextElement();
-            }
-          delete iterator;
-        }
-    }
+//   for (int i = 1; i<= trackElemCount ;i++)
+//     {
+//       TrackElement* tmpElem = this->firstTrackElem->findByID(i);
+//       if( tmpElem->childCount > 0)
+//         {
+//           tIterator<TrackElement>* iterator = tmpElem->children->getIterator();
+//           TrackElement* enumElem = iterator->firstElement();
+//           //TrackElement* enumElem = tmpElem->children->enumerate();
+//           while (enumElem)
+//             {
+//
+//               // c1-continuity
+//               enumElem->curve->addNode(enumElem->curve->getNode(0) +
+//                                                    ((enumElem->curve->getNode(0) -
+//                                                     tmpElem->curve->getNode(tmpElem->curve->getNodeCount()-1))
+//                                                     ),2);
+//               enumElem->nodeCount++;
+//               // c2-continuity
+//               enumElem->curve->addNode((tmpElem->curve->getNode(tmpElem->curve->getNodeCount())-
+//                                                     tmpElem->curve->getNode(tmpElem->curve->getNodeCount()-1)) * 4 +
+//                                                    tmpElem->curve->getNode(tmpElem->curve->getNodeCount()-2), 3);
+//               enumElem->nodeCount++;
+//               PRINTF(5)("accelerations: %d-in: count: %d, %f, %f, %f\n                  %d-out: count: %d %f, %f, %f\n",
+//                      tmpElem->ID, tmpElem->nodeCount,
+//                      tmpElem->curve->calcAcc(0.999).x, tmpElem->curve->calcAcc(0.999).y, tmpElem->curve->calcAcc(0.999).z,
+//                      enumElem->ID, enumElem->nodeCount,
+//                      enumElem->curve->calcAcc(0).x, enumElem->curve->calcAcc(0).y, enumElem->curve->calcAcc(0).z);
+//
+//               enumElem = iterator->nextElement();
+//             }
+//           delete iterator;
+//         }
+//     }
+
+
+
   /*for (int i = 1; i <= trackElemCount;i++)
     if (this->firstTrackElem->findByID(i)->endTime > this->maxTime)
@@ -135,36 +185,36 @@
 void Track::tick(float dt)
 {
-  PRINTF(4)("CurrentTrackID: %d, LocalTime is: %f, timestep is: %f\n", this->currentTrackElem->ID, this->localTime, dt);
-  if (this->localTime <= this->firstTrackElem->duration)
-    this->jumpTo(this->localTime);
-  if (this->localTime <= this->maxTime)
-    this->localTime += dt;
-  if (this->localTime > this->currentTrackElem->endTime
-      && this->currentTrackElem->children)
-    {
-      if (this->currentTrackElem->jumpTime != 0.0)
-        this->jumpTo(this->localTime + this->currentTrackElem->jumpTime);
-      // jump to the next TrackElement and also set the history of the new Element to the old one.
-      TrackElement* tmpHistoryElem = this->currentTrackElem;
-      this->currentTrackElem = this->currentTrackElem->getChild(this->choosePath(this->currentTrackElem));
-      this->currentTrackElem->history = tmpHistoryElem;
-      if (this->currentTrackElem->getName())
-        {
-          this->trackText->setText(this->currentTrackElem->getName());
-          this->textAnimation->replay();
-        }
-    }
-  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);
-    }
+//   PRINTF(4)("CurrentTrackID: %d, LocalTime is: %f, timestep is: %f\n", this->currentTrackElem->ID, this->localTime, dt);
+//   if (this->localTime <= this->firstTrackElem->duration)
+//     this->jumpTo(this->localTime);
+//   if (this->localTime <= this->maxTime)
+//     this->localTime += dt;
+//   if (this->localTime > this->currentTrackElem->endTime
+//       && this->currentTrackElem->children)
+//     {
+//       if (this->currentTrackElem->jumpTime != 0.0)
+//         this->jumpTo(this->localTime + this->currentTrackElem->jumpTime);
+//       // jump to the next TrackElement and also set the history of the new Element to the old one.
+//       TrackElement* tmpHistoryElem = this->currentTrackElem;
+//       this->currentTrackElem = this->currentTrackElem->getChild(this->choosePath(this->currentTrackElem));
+//       this->currentTrackElem->history = tmpHistoryElem;
+//       if (this->currentTrackElem->getName())
+//         {
+//           this->trackText->setText(this->currentTrackElem->getName());
+//           this->textAnimation->replay();
+//         }
+//     }
+//   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);
+//     }
 }
 
Index: branches/playability/src/util/track/track.h
===================================================================
--- branches/playability/src/util/track/track.h	(revision 10085)
+++ branches/playability/src/util/track/track.h	(revision 10088)
@@ -2,5 +2,5 @@
  * @file track.h
  */
- 
+
 #ifndef _TRACK_H_
 #define _TRACK_H_
@@ -12,19 +12,30 @@
 class PNode;
 class TiXmlElement;
+class TrackElement;
 
 class Track : public BaseObject
 {
+  ObjectListDeclaration(Track);
+
  public:
+   Track();
+   Track(const TiXmlElement* root);
+   virtual ~Track();
+
       virtual void loadParams(const TiXmlElement* root);
       void addPoint(float x, float y, float z);
       void addPoint(Vector newPoint);
-      
+
       void finalize();
       inline Vector calcPos() const;
       inline Vector calcDir() const;
       void tick(float dt);
-      
+
       PNode* getTrackNode();
- 
+
+  private:
+    void init();
+
+
  private:
       TrackElement*        firstTrackElem;         //!< The first TrackElement that exists.
@@ -32,5 +43,5 @@
       CurveType            curveType;              //!< The CurveType the entire TrackSystem will have.
       int                  trackElemCount;         //!< The count of TrackElements that exist.
-      
+
       PNode*               trackNode;              //!< The node that is slave to the Track. This node will be moved while update the Track, and must NOT move itself.
 };
Index: branches/playability/src/util/track/track_manager.cc
===================================================================
--- branches/playability/src/util/track/track_manager.cc	(revision 10085)
+++ branches/playability/src/util/track/track_manager.cc	(revision 10088)
@@ -26,4 +26,6 @@
 #include "t_animation.h"
 
+#include <string.h>
+
 
 #include "parser/tinyxml/tinyxml.h"
@@ -32,4 +34,5 @@
 #include <stdarg.h>
 
+ObjectListDefinition(TrackElement);
 
 
@@ -39,5 +42,6 @@
 TrackElement::TrackElement()
 {
-  this->setClassID(CL_TRACK_ELEMENT, "TrackElement");
+  this->registerObject(this, TrackElement::_objectList);
+
 
   this->isFresh = true;
@@ -126,6 +130,6 @@
 {
   // return if Found.
-  if (this->getName() && !strcmp(this->getName(), trackName))
-    return this;
+//   if (this->getName() && !strcmp(this->getName(), trackName))
+//     return this;
   // search all children
   if (this->childCount > 0)
@@ -217,43 +221,43 @@
 void TrackElement::debug() const
 {
-  PRINT(0)("--== TrackElement:%i ==--", this->ID);
-  if(this->getName())
-    PRINT(0)("--++Name: %s++--", this->getName());
-  if(this->isFresh)
-    PRINT(0)("  -- has not jet eddited in any way --\n");
-  PRINT(0)("\n   TimeTable: startingTime=%f; endTime=%f; duration=%f; jumpTime=%f\n", this->startingTime, this->endTime, this->duration, this->jumpTime);
-  PRINT(0)("   consists of %d Points\n", this->nodeCount);
-  if (this->childCount == 0)
-    PRINT(0)("   has no child\n");
-  else if (this->childCount == 1)
-    PRINT(0)("   has 1 child: =%d=\n", this->getChild(0)->ID);
-  else if (this->childCount > 1)
-    {
-      PRINT(0)("   has %d children: ", this->childCount);
-      //TrackElement* enumElem = this->children->enumerate();
-      tIterator<TrackElement>* iterator = this->children->getIterator();
-      TrackElement* enumElem = iterator->firstElement();
-      while (enumElem)
-        {
-          PRINT(0)("=%d= ", enumElem->ID);
-          enumElem = iterator->nextElement();
-        }
-      delete iterator;
-      PRINT(0)("\n");
-    }
-
-  if(this->isHotPoint)
-    PRINT(0)("   is a special Point:\n");
-  if(this->isSavePoint)
-    PRINT(0)("    is a SavePoint\n");
-  if(this->isFork)
-    {
-      PRINT(0)("    is A Fork with with %d children.\n", this->childCount);
-    }
-  if(this->isJoined)
-    PRINT(0)("   is Joined at the End\n");
-
-  if(!this->backLoopCheck()) /* this should not happen */
-    PRINT(2)(" THERE IS A BACKLOOP TO THIS ELEMENT\n");
+//   PRINT(0)("--== TrackElement:%i ==--", this->ID);
+//   if(this->getName())
+//     PRINT(0)("--++Name: %s++--", this->getName());
+//   if(this->isFresh)
+//     PRINT(0)("  -- has not jet eddited in any way --\n");
+//   PRINT(0)("\n   TimeTable: startingTime=%f; endTime=%f; duration=%f; jumpTime=%f\n", this->startingTime, this->endTime, this->duration, this->jumpTime);
+//   PRINT(0)("   consists of %d Points\n", this->nodeCount);
+//   if (this->childCount == 0)
+//     PRINT(0)("   has no child\n");
+//   else if (this->childCount == 1)
+//     PRINT(0)("   has 1 child: =%d=\n", this->getChild(0)->ID);
+//   else if (this->childCount > 1)
+//     {
+//       PRINT(0)("   has %d children: ", this->childCount);
+//       //TrackElement* enumElem = this->children->enumerate();
+//       tIterator<TrackElement>* iterator = this->children->getIterator();
+//       TrackElement* enumElem = iterator->firstElement();
+//       while (enumElem)
+//         {
+//           PRINT(0)("=%d= ", enumElem->ID);
+//           enumElem = iterator->nextElement();
+//         }
+//       delete iterator;
+//       PRINT(0)("\n");
+//     }
+//
+//   if(this->isHotPoint)
+//     PRINT(0)("   is a special Point:\n");
+//   if(this->isSavePoint)
+//     PRINT(0)("    is a SavePoint\n");
+//   if(this->isFork)
+//     {
+//       PRINT(0)("    is A Fork with with %d children.\n", this->childCount);
+//     }
+//   if(this->isJoined)
+//     PRINT(0)("   is Joined at the End\n");
+//
+//   if(!this->backLoopCheck()) /* this should not happen */
+//     PRINT(2)(" THERE IS A BACKLOOP TO THIS ELEMENT\n");
 }
 
@@ -358,7 +362,4 @@
 TrackManager::TrackManager()
 {
-  this->setClassID(CL_TRACK_MANAGER, "TrackManager");
-  this->setName("TrackManager");
-
   TrackManager::singletonRef = this; // do this because otherwise the TrackNode cannot get The instance of the TrackManager
 
@@ -395,29 +396,29 @@
 void TrackManager::loadParams(const TiXmlElement* root)
 {
-  double x, y, z, d;
-
-  LOAD_PARAM_START_CYCLE(root, element);
-  {
-
-    LoadParam_CYCLE(element, "WorkOn", this, TrackManager, workOnS)
-        .describe("Selects a TrackElement (by name) to work on");
-
-    LoadParam_CYCLE(element, "Point", this, TrackManager, addPoint)
-        .describe("Adds a new Point to the currently selected TrackElement");
-
-    LoadParam_CYCLE(element, "Duration", this, TrackManager, setDuration)
-        .describe("Sets the Duration of the currently selected TrackElement");
-
-    LoadParam_CYCLE(element, "HotPoint", this, TrackManager, addHotPoint)
-        .describe("Sets a new Point that acts as a hot point. meaning, the curve will flow through this Point");
-
-    LoadParam_CYCLE(element, "SavePoint", this, TrackManager, setSavePointS)
-        .describe("Sets the current selected Point to a Savepoint, meaning that the curve will be ended and a new one starts, and that one starts again from this point on");
-
-    LoadParam_CYCLE(element, "Fork", this, TrackManager, forkS)
-        .describe("Forks the Path into multiple forked Path names seperated by ','");
-
-    LoadParam_CYCLE(element, "Join", this, TrackManager, joinS)
-        .describe("Joins multiple joining Path names seperated by ','");
+//   double x, y, z, d;
+//
+//   LOAD_PARAM_START_CYCLE(root, element);
+//   {
+//
+//     LoadParam_CYCLE(element, "WorkOn", this, TrackManager, workOnS)
+//         .describe("Selects a TrackElement (by name) to work on");
+//
+//     LoadParam_CYCLE(element, "Point", this, TrackManager, addPoint)
+//         .describe("Adds a new Point to the currently selected TrackElement");
+//
+//     LoadParam_CYCLE(element, "Duration", this, TrackManager, setDuration)
+//         .describe("Sets the Duration of the currently selected TrackElement");
+//
+//     LoadParam_CYCLE(element, "HotPoint", this, TrackManager, addHotPoint)
+//         .describe("Sets a new Point that acts as a hot point. meaning, the curve will flow through this Point");
+//
+//     LoadParam_CYCLE(element, "SavePoint", this, TrackManager, setSavePointS)
+//         .describe("Sets the current selected Point to a Savepoint, meaning that the curve will be ended and a new one starts, and that one starts again from this point on");
+//
+//     LoadParam_CYCLE(element, "Fork", this, TrackManager, forkS)
+//         .describe("Forks the Path into multiple forked Path names seperated by ','");
+//
+//     LoadParam_CYCLE(element, "Join", this, TrackManager, joinS)
+//         .describe("Joins multiple joining Path names seperated by ','");
 
       /*
@@ -445,6 +446,7 @@
         }
       */
-  }
-  LOAD_PARAM_END_CYCLE(element);
+
+//   }
+//   LOAD_PARAM_END_CYCLE(element);
 }
 
@@ -477,38 +479,38 @@
 void TrackManager::initChildren(unsigned int childCount, TrackElement* trackElem)
 {
-  if (!trackElem)
-    trackElem = this->currentTrackElem;
-
-  trackElem->childCount = childCount;
-  trackElem->mainJoin = true;  // this tells join, that this one is the Main Join, if it tries to join multiple Tracks
-  trackElem->children =  new tList<TrackElement>();
-  for (int i = 0; i < childCount; i++)
-    {
-      // create a new Element
-      TrackElement* newElem = new TrackElement();
-      // setting up the new ID
-      newElem->ID = ++trackElemCount;
-      // setting up the Time
-      newElem->startingTime = trackElem->endTime + trackElem->jumpTime;
-      // adds the conection Point
-      this->addPointV(trackElem->curve->getNode(trackElem->curve->getNodeCount()),
-                     newElem);
-      // add the new child to the childList.
-      trackElem->children->add(newElem);
-    }
-
-  // setting the Name of the new TrackElement to the name of the last one + _childI
-
-  if (trackElem->getName())
-    {
-      for (int i = 0; i < trackElem->childCount; i++)
-      {
-        char* childName = new char[strlen(trackElem->getName())+10];
-        sprintf(childName, "%s_child%d", trackElem->getName(), i);
-        trackElem->getChild(i)->setName(childName);
-      }
-    }
-  // select the first Child to work on.
-  this->currentTrackElem = trackElem->getChild(0);
+//   if (!trackElem)
+//     trackElem = this->currentTrackElem;
+//
+//   trackElem->childCount = childCount;
+//   trackElem->mainJoin = true;  // this tells join, that this one is the Main Join, if it tries to join multiple Tracks
+//   trackElem->children =  new tList<TrackElement>();
+//   for (int i = 0; i < childCount; i++)
+//     {
+//       // create a new Element
+//       TrackElement* newElem = new TrackElement();
+//       // setting up the new ID
+//       newElem->ID = ++trackElemCount;
+//       // setting up the Time
+//       newElem->startingTime = trackElem->endTime + trackElem->jumpTime;
+//       // adds the conection Point
+//       this->addPointV(trackElem->curve->getNode(trackElem->curve->getNodeCount()),
+//                      newElem);
+//       // add the new child to the childList.
+//       trackElem->children->add(newElem);
+//     }
+//
+//   // setting the Name of the new TrackElement to the name of the last one + _childI
+//
+//   if (trackElem->getName())
+//     {
+//       for (int i = 0; i < trackElem->childCount; i++)
+//       {
+//         char* childName = new char[strlen(trackElem->getName())+10];
+//         sprintf(childName, "%s_child%d", trackElem->getName(), i);
+//         trackElem->getChild(i)->setName(childName);
+//       }
+//     }
+//   // select the first Child to work on.
+//   this->currentTrackElem = trackElem->getChild(0);
 }
 
@@ -659,7 +661,7 @@
 void TrackManager::setSavePointS(const std::string& nextElementName)
 {
-  this->setSavePoint(NULL);
-  if (strcmp(nextElementName, ""))
-    this->firstTrackElem->findByID(this->trackElemCount)->setName(nextElementName);
+//   this->setSavePoint(NULL);
+//   if (strcmp(nextElementName, ""))
+//     this->firstTrackElem->findByID(this->trackElemCount)->setName(nextElementName);
 }
 
@@ -736,14 +738,14 @@
 void TrackManager::forkS(const std::string& forkString)
 {
-  SubString strings(forkString, ',');
-
-  int* trackIDs = new int[strings.getCount()];
-  this->forkV(strings.getCount(), trackIDs, NULL);
-
-  for(int i = 0; i < strings.getCount(); i++)
-    {
-      this->firstTrackElem->findByID(trackIDs[i])->setName(strings.getString(i));
-    }
-  delete []trackIDs;
+//   SubString strings(forkString, ',');
+//
+//   int* trackIDs = new int[strings.getCount()];
+//   this->forkV(strings.getCount(), trackIDs, NULL);
+//
+//   for(int i = 0; i < strings.getCount(); i++)
+//     {
+//       this->firstTrackElem->findByID(trackIDs[i])->setName(strings.getString(i));
+//     }
+//   delete []trackIDs;
 }
 
@@ -877,22 +879,22 @@
 void TrackManager::joinS(const std::string& joinString)
 {
-  SubString strings(joinString, ',');
-
-  int* trackIDs = new int[strings.getCount()];
-  this->joinV(strings.getCount(), trackIDs);
-
-  for(unsigned int i = 0; i < strings.getCount(); i++)
-    {
-      TrackElement* tmpElem = this->firstTrackElem->findByName(strings.getString(i).c_str());
-      if (tmpElem != NULL)
-        trackIDs[i] = tmpElem->ID;
-      else
-      {
-        PRINTF(1)("Trying to join a Track, of which the name does not exist: %s\n", strings.getString(i).c_str());
-        trackIDs[i] = -1;
-      }
-    }
-  this->joinV(strings.getCount(), trackIDs);
-  delete []trackIDs;
+//   SubString strings(joinString, ',');
+//
+//   int* trackIDs = new int[strings.getCount()];
+//   this->joinV(strings.getCount(), trackIDs);
+//
+//   for(unsigned int i = 0; i < strings.getCount(); i++)
+//     {
+//       TrackElement* tmpElem = this->firstTrackElem->findByName(strings.getString(i).c_str());
+//       if (tmpElem != NULL)
+//         trackIDs[i] = tmpElem->ID;
+//       else
+//       {
+//         PRINTF(1)("Trying to join a Track, of which the name does not exist: %s\n", strings.getString(i).c_str());
+//         trackIDs[i] = -1;
+//       }
+//     }
+//   this->joinV(strings.getCount(), trackIDs);
+//   delete []trackIDs;
 }
 
@@ -1073,36 +1075,36 @@
 void TrackManager::tick(float dt)
 {
-  PRINTF(4)("CurrentTrackID: %d, LocalTime is: %f, timestep is: %f\n", this->currentTrackElem->ID, this->localTime, dt);
-  if (this->localTime <= this->firstTrackElem->duration)
-    this->jumpTo(this->localTime);
-  if (this->localTime <= this->maxTime)
-    this->localTime += dt;
-  if (this->localTime > this->currentTrackElem->endTime
-      && this->currentTrackElem->children)
-    {
-      if (this->currentTrackElem->jumpTime != 0.0)
-        this->jumpTo(this->localTime + this->currentTrackElem->jumpTime);
-      // jump to the next TrackElement and also set the history of the new Element to the old one.
-      TrackElement* tmpHistoryElem = this->currentTrackElem;
-      this->currentTrackElem = this->currentTrackElem->getChild(this->choosePath(this->currentTrackElem));
-      this->currentTrackElem->history = tmpHistoryElem;
-      if (this->currentTrackElem->getName())
-        {
-          this->trackText->setText(this->currentTrackElem->getName());
-          this->textAnimation->replay();
-        }
-    }
-  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);
-    }
+//   PRINTF(4)("CurrentTrackID: %d, LocalTime is: %f, timestep is: %f\n", this->currentTrackElem->ID, this->localTime, dt);
+//   if (this->localTime <= this->firstTrackElem->duration)
+//     this->jumpTo(this->localTime);
+//   if (this->localTime <= this->maxTime)
+//     this->localTime += dt;
+//   if (this->localTime > this->currentTrackElem->endTime
+//       && this->currentTrackElem->children)
+//     {
+//       if (this->currentTrackElem->jumpTime != 0.0)
+//         this->jumpTo(this->localTime + this->currentTrackElem->jumpTime);
+//       // jump to the next TrackElement and also set the history of the new Element to the old one.
+//       TrackElement* tmpHistoryElem = this->currentTrackElem;
+//       this->currentTrackElem = this->currentTrackElem->getChild(this->choosePath(this->currentTrackElem));
+//       this->currentTrackElem->history = tmpHistoryElem;
+//       if (this->currentTrackElem->getName())
+//         {
+//           this->trackText->setText(this->currentTrackElem->getName());
+//           this->textAnimation->replay();
+//         }
+//     }
+//   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);
+//     }
 }
 
@@ -1116,14 +1118,14 @@
 void TrackManager::jumpTo(float time)
 {
-  if (time == 0)
-    {
-      this->currentTrackElem = this->firstTrackElem;
-      if (this->currentTrackElem->getName())
-        {
-          this->trackText->setText(this->currentTrackElem->getName());
-          this->textAnimation->play();
-        }
-    }
-  this->localTime = time;
+//   if (time == 0)
+//     {
+//       this->currentTrackElem = this->firstTrackElem;
+//       if (this->currentTrackElem->getName())
+//         {
+//           this->trackText->setText(this->currentTrackElem->getName());
+//           this->textAnimation->play();
+//         }
+//     }
+//   this->localTime = time;
 }
 
Index: branches/playability/src/util/track/track_manager.h
===================================================================
--- branches/playability/src/util/track/track_manager.h	(revision 10085)
+++ branches/playability/src/util/track/track_manager.h	(revision 10088)
@@ -41,4 +41,6 @@
 class TrackElement : public BaseObject
 {
+  ObjectListDeclaration(TrackElement);
+
  public:
   TrackElement();
@@ -131,5 +133,5 @@
     \li TrackElement: A Part of A whole Track
 */
-class TrackManager : public BaseObject
+class TrackManager
 {
  public:
Index: branches/playability/src/util/track/track_node.cc
===================================================================
--- branches/playability/src/util/track/track_node.cc	(revision 10085)
+++ branches/playability/src/util/track/track_node.cc	(revision 10088)
@@ -17,10 +17,11 @@
 
 
-#include "track_node.h"
+#include "track/track_node.h"
 
-#include "track_manager.h"
+#include "track/track_manager.h"
 
 
-ObjectListDefinition(TracNode);
+ObjectListDefinition(TrackNode);
+
 /**
  *  standard constructor
@@ -28,6 +29,5 @@
 TrackNode::TrackNode ()
 {
-  this->registerObject(this, TracNode::_objectList);
-  this->setName("TrackNode");
+  this->registerObject(this, TrackNode::_objectList);
 
   PNode::getNullParent()->addChild(this);
Index: branches/playability/src/util/track/track_node.h
===================================================================
--- branches/playability/src/util/track/track_node.h	(revision 10085)
+++ branches/playability/src/util/track/track_node.h	(revision 10088)
@@ -14,4 +14,5 @@
 #include "p_node.h"
 
+
 /* FORWARD DECLARATION */
 class TrackManager;
@@ -20,5 +21,5 @@
 class TrackNode : public PNode
 {
-  ObjectListDeclaratrion(TracNode);
+  ObjectListDeclaration(TrackNode);
  public:
   TrackNode ();
