Index: /orxonox/branches/trackManager/src/lib/math/curve.cc
===================================================================
--- /orxonox/branches/trackManager/src/lib/math/curve.cc	(revision 3516)
+++ /orxonox/branches/trackManager/src/lib/math/curve.cc	(revision 3517)
@@ -46,4 +46,9 @@
 }
 
+/**
+   \brief adds a new Node to the bezier Curve ath Position insertPosition
+   \param insertPosition The Position on the Path to insert the node.
+   \param newNode a Vector to the position of the new node
+*/
 void Curve::addNode(const Vector& newNode, unsigned int insertPosition)
 {
@@ -253,6 +258,6 @@
 /**
    \brief Calulates the direction of the Curve at time t.
-   \param The time at which to evaluate the curve.
-   \returns The vvaluated Vector.
+   \param t The time at which to evaluate the curve.
+   \returns The Directional Vector.
 */
 Vector BezierCurve::calcDir (float t)
@@ -261,4 +266,9 @@
 }
 
+/**
+   \brief Calulates the acceleration of the Curve at time t.
+   \param t The time at which to evaluate the curve.
+   \returns The acceleration-Vector.
+*/
 Vector BezierCurve::calcAcc (float t)
 {
@@ -416,5 +426,5 @@
 /**
    \brief Calulates the direction of the Curve at time t.
-   \param The time at which to evaluate the curve.
+   \param t The time at which to evaluate the curve.
    \returns The vvaluated Vector.
 */
Index: /orxonox/branches/trackManager/src/lib/math/curve.h
===================================================================
--- /orxonox/branches/trackManager/src/lib/math/curve.h	(revision 3516)
+++ /orxonox/branches/trackManager/src/lib/math/curve.h	(revision 3517)
@@ -17,4 +17,21 @@
 
 //! An abstract class to handle curves. Needed for the Tracking system in orxonox.
+/**
+   A Curve is a smooth line which tries to approximate a path through the nodes given to it.
+   <br>
+
+   <b>Usage of Curves:</b><br>
+   \li Creation: Curve* newCurve = new BezierCurve();
+   \li Adding some Points: newCurve->addNode([Vector to the point to add]);
+   \li Get Point on Curve: newCurve->calcPos(timeIndex);    // where timeindex is in the interval [0,1]
+   <br>
+   More Fuctionality is:
+   \li debug():  outputs some info about this curve.
+   \li getNode(i): returns a Vector to the n'th node of the Curve.
+   \li getNodeCount(): returns the count of nodes.
+   <br>
+   General Info:
+   \li Curves take rather much power to be created/altered, but are fast calculated at runtime.
+*/
 class Curve
 {
@@ -39,4 +56,5 @@
 
  private:
+  //! rebuilds the Curve with the right algorithm
   virtual void rebuild(void) = 0;
  public:
@@ -45,9 +63,30 @@
   void addNode(const Vector& newNode, unsigned int insertPosition);
   Vector getNode(unsigned int nodeToFind);
+  /** \returns the Count of nodes of this Curve */
   inline int getNodeCount(void) { return this->nodeCount;}
 
-  virtual Vector calcPos(float t) = 0;
+  /**
+     \brief A virtual function to calculate the Position on the Curve
+     \returns positionVector
+     \param t the timeindex on this curve [0,1]f
+  */
+  virtual Vector calcPos(float t) = 0; 
+  /**
+     \brief A virtual function to calculate the Direction of the Curve
+     \returns directionVector
+     \param t the timeindex on this curve [0,1]f
+  */
   virtual Vector calcDir(float t) = 0;
+  /**
+     \brief A virtual function to calculate the acceleration on the Curve
+     \returns accelerationVector
+     \param t the timeindex on this curve [0,1]f
+  */
   virtual Vector calcAcc(float t) = 0;
+  /**
+     \brief A virtual function to calculate the Quaternion on the Curve
+     \returns directional Quaternion
+     \param t the timeindex on this curve [0,1]f
+  */
   virtual Quaternion calcQuat(float t) = 0;
  
Index: /orxonox/branches/trackManager/src/track_manager.cc
===================================================================
--- /orxonox/branches/trackManager/src/track_manager.cc	(revision 3516)
+++ /orxonox/branches/trackManager/src/track_manager.cc	(revision 3517)
@@ -35,5 +35,4 @@
   this->isJoined = false;
   this->mainJoin = false;
-  this->cond; //!< todo think!!
   this->ID = -1;
   this->startingTime = 0; //!< \todo eventually set this to the max time of TrackManager.
@@ -111,4 +110,9 @@
 }
 
+/**
+   \brief CONDITION that chooses the first child for the decision (static)
+   \param nothing Nothing in this function
+   \returns the chosen child
+*/
 int TrackElement::lowest(void* nothing)
 {
@@ -116,4 +120,9 @@
 }
 
+/**
+   \brief CONDITION that chooses the last child for the decision (static)
+   \param nothing Nothing in this function
+   \returns the chosen child
+*/
 int TrackElement::highest(void* nothing)
 { 
@@ -121,4 +130,9 @@
 }
 
+/**
+   \brief CONDITION that chooses a random child for the decision (static)
+   \param nothing Nothing in this function
+   \returns the chosen child
+*/
 int TrackElement::random(void* nothing)
 {
@@ -130,5 +144,10 @@
 }
 
-
+/**
+   \brief CONDITION that chooses child 0, if the node(probably Player)
+   is left of its parent (z<0)) and 1/right otherwise.
+   \param node The node to act upon.
+   \returns the chosen child
+*/
 int TrackElement::leftRight(void* node)
 {
@@ -142,5 +161,14 @@
 
 
-// todo
+/**
+   \brief CONDITION that chooses the child, that has the nearest distance to the node (probably player).
+   \param node The node to act upon.
+   \returns the chosen child
+
+   This is rather dangerous, because one must carefully set the points on the curve.
+   The best Way is to set the nodes as wide away of each other as possible,
+   but take into consideration, that if the nodes are to far from a center node, the center will be chosen.
+   (play with this!!).
+*/
 int TrackElement::nearest(void* node)
 {
@@ -264,5 +292,6 @@
 /**
    \brief Sets the Type of the Curve
-   \brief curveType The Type to set
+   \param curveType The Type to set
+   \param trackElem the TrackElement that should get a new Curve.
 */
 void TrackManager::setCurveType(CurveType curveType, TrackElement* trackElem)
Index: /orxonox/branches/trackManager/src/track_manager.h
===================================================================
--- /orxonox/branches/trackManager/src/track_manager.h	(revision 3516)
+++ /orxonox/branches/trackManager/src/track_manager.h	(revision 3517)
@@ -16,11 +16,4 @@
 
 class PNode;
-
-//! condition for choosing a certain Path. \todo implement a useful way.
-struct PathCondition
-{
-  
-};
-  
 
 //! A Graph-Element, that holds the curve-structure of a Level.
@@ -44,5 +37,4 @@
   bool isJoined;             //!< If the End of the Curve is joined.
   bool mainJoin;             //!< If the End of the Curve is joined, and this is the one Curve the others join to.
-  PathCondition cond;        //!< The Split Condition;
   int ID;                    //!< The ID of this TrackElement
   float startingTime;        //!< The time at which this Track begins.
@@ -67,7 +59,8 @@
   int leftRight(void* node);
   int nearest(void* node);
-  int enemyKilled(void* entity);
+  // todo  int enemyKilled(void* entity);
 };
 
+//! the Condition to choose between the different ways of the game.
 enum CONDITION {LOWEST, HIGHEST, RANDOM, LEFTRIGHT, NEAREST, ENEMYKILLED};
 
@@ -118,5 +111,5 @@
   float maxTime;                      //!< The maximal time the track has.
   int trackElemCount;                 //!< The count of TrackElements that exist.
-  PNode* bindSlave;
+  PNode* bindSlave;                   //!< The node that is slave to the TrackManager. This node will be moved while update the TrackManager, and must NOT move itself.
   
   void initChildren(unsigned int childCount);
@@ -130,5 +123,6 @@
   // Methods to change the Path (initialisation)
   void workOn(unsigned int trackID);
-  inline void setCurveType(CurveType curveType) { this->setCurveType (curveType, this->currentTrackElem);}
+  /** \see setCurveType(CurveType curveType, TrackElement* trackElem); \param curveType the type of the Curve */
+  inline void setCurveType(CurveType curveType) { this->setCurveType (curveType, this->currentTrackElem);};
   void setCurveType(CurveType curveType, TrackElement* trackElem);
   void setDuration(float time);
@@ -140,5 +134,5 @@
   void forkV(unsigned int count, int* trackIDs);
   void condition(CONDITION cond, void* subject);
-  void condition(unsigned int groupID, CONDITION cond, void* subject); //!< \todo really do this!!
+  void condition(unsigned int groupID, CONDITION cond, void* subject);
   void join(unsigned int count, ...);
   void joinV(unsigned int count, int* trackIDs);
