Index: orxonox/trunk/src/lib/graphics/text_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 3844)
+++ orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 3845)
@@ -138,5 +138,5 @@
    \param alignment the alignment to set
 */
-void Text::setAlignment(TEXT_ALIGNMENT alignemnt)
+void Text::setAlignment(TEXT_ALIGNMENT alignment)
 {
   this->alignment = alignment;
@@ -185,5 +185,11 @@
   // setting the Position of this Text.
   Vector pos;
-  if (this->bindNode)
+  if (this->alignment == TEXT_ALIGN_SCREEN_CENTER)
+    {
+      pos.x = GraphicsEngine::getInstance()->getResolutionX()/2 + this->posSize.x;
+      pos.y = GraphicsEngine::getInstance()->getResolutionY()/2 + this->posSize.y;
+      pos.z = 0;
+    }
+  else if (this->bindNode)
     {
       GLdouble x = this->bindNode->getAbsCoor().x;
@@ -211,5 +217,5 @@
   if (this->alignment == TEXT_ALIGN_RIGHT)
     glTranslatef(-this->posSize.w, 0, 0);
-  else   if (this->alignment == TEXT_ALIGN_CENTER)
+  else   if (this->alignment == TEXT_ALIGN_CENTER || this->alignment == TEXT_ALIGN_SCREEN_CENTER)
     glTranslatef(-this->posSize.w/2, 0, 0);
 
Index: orxonox/trunk/src/lib/graphics/text_engine.h
===================================================================
--- orxonox/trunk/src/lib/graphics/text_engine.h	(revision 3844)
+++ orxonox/trunk/src/lib/graphics/text_engine.h	(revision 3845)
@@ -30,5 +30,5 @@
 
 //! An enumerator for the text alignment.
-enum TEXT_ALIGNMENT {TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER};
+enum TEXT_ALIGNMENT {TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER, TEXT_ALIGN_SCREEN_CENTER};
 
 /* some default values */
@@ -104,5 +104,5 @@
   void setText(const char* text);
   void setPosition(int x, int y);
-  void setAlignment(TEXT_ALIGNMENT alignemnt);
+  void setAlignment(TEXT_ALIGNMENT alignment);
   /** \param blending the blending intensity to set (between 0.0 and 1.0) */
   inline void setBlending(float blending) {this->blending = blending;}
Index: orxonox/trunk/src/track_manager.cc
===================================================================
--- orxonox/trunk/src/track_manager.cc	(revision 3844)
+++ orxonox/trunk/src/track_manager.cc	(revision 3845)
@@ -23,6 +23,6 @@
 #include "stdincl.h"
 #include "list.h"
-
-
+#include "text_engine.h"
+#include "animation.h"
 
 #include <stdarg.h>
@@ -386,6 +386,15 @@
   this->maxTime = 0;
   this->trackElemCount = 1;
+
   this->trackNode = new TrackNode();
   this->setBindSlave(this->trackNode);
+  // initializing the Text
+  this->trackText = TextEngine::getInstance()->createText("fonts/earth.ttf", 30, TEXT_DYNAMIC, 0, 255, 0);
+  this->trackText->setAlignment(TEXT_ALIGN_SCREEN_CENTER);
+  // initializing the Animation for the Text.
+  this->textAnimation = new tAnim<Text>(this->trackText, &Text::setBlending);
+  this->textAnimation->addKeyFrame(1.0, 1.0, ANIM_LINEAR);
+  this->textAnimation->addKeyFrame(0.0, 1.0);
+  this->textAnimation->setInfinity(ANIM_INF_CONSTANT);
 }
 
@@ -929,4 +938,9 @@
       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->play();
+	}
     }
   if (this->bindSlave)
@@ -954,5 +968,12 @@
 {
   if (time == 0)
-    this->currentTrackElem = this->firstTrackElem;
+    {
+      this->currentTrackElem = this->firstTrackElem;
+      if (this->currentTrackElem->getName())
+	{
+	  this->trackText->setText(this->currentTrackElem->getName());
+	  this->textAnimation->play();
+	}
+    }
   this->localTime = time;
 }
Index: orxonox/trunk/src/track_manager.h
===================================================================
--- orxonox/trunk/src/track_manager.h	(revision 3844)
+++ orxonox/trunk/src/track_manager.h	(revision 3845)
@@ -15,5 +15,8 @@
 #include "base_object.h"
 
+// Forward Definition
 class PNode;
+class Text;
+template<class T> class tAnim;
 template<class T> class tList;
 
@@ -136,6 +139,10 @@
   float maxTime;                      //!< The maximal time the track has.
   int trackElemCount;                 //!< The count of TrackElements that exist.
+
+  // external
   PNode* bindSlave;                   //!< The node that is slave to the TrackManager. This node will be moved while update the TrackManager, and must NOT move itself.
   PNode* trackNode;                   //!< The main TrackNode of this Track.
+  Text* trackText;                    //!< The text to display when switching between Worlds.
+  tAnim<Text>* textAnimation;         //!< An Animation for the Text.
   
   void initChildren(unsigned int childCount, TrackElement* trackElem = NULL);
