Index: trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- trunk/src/lib/graphics/graphics_engine.cc	(revision 5121)
+++ trunk/src/lib/graphics/graphics_engine.cc	(revision 5122)
@@ -464,5 +464,5 @@
 if (this->geTextCFPS == NULL)
 {
-  this->geTextCFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_DYNAMIC);
+  this->geTextCFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_RENDER_DYNAMIC);
   this->geTextCFPS->setAlignment(TEXT_ALIGN_LEFT);
   this->geTextCFPS->setAbsCoor2D(5, 5);
@@ -470,5 +470,5 @@
 if (this->geTextMaxFPS == NULL)
 {
-      this->geTextMaxFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_DYNAMIC);
+      this->geTextMaxFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_RENDER_DYNAMIC);
       this->geTextMaxFPS->setAlignment(TEXT_ALIGN_LEFT);
       this->geTextMaxFPS->setAbsCoor2D(5, 35);
@@ -476,5 +476,5 @@
 if (this->geTextMinFPS == NULL)
 {
-      this->geTextMinFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_DYNAMIC);
+      this->geTextMinFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_RENDER_DYNAMIC);
       this->geTextMinFPS->setAlignment(TEXT_ALIGN_LEFT);
       this->geTextMinFPS->setAbsCoor2D(5, 65);
Index: trunk/src/lib/graphics/text_engine.cc
===================================================================
--- trunk/src/lib/graphics/text_engine.cc	(revision 5121)
+++ trunk/src/lib/graphics/text_engine.cc	(revision 5122)
@@ -50,5 +50,5 @@
    a text with the TextEngine.
 */
-Text::Text(Font* font, int type)
+Text::Text(Font* font, TEXT_RENDER_TYPE type)
 {
   this->setClassID(CL_TEXT, "Text");
@@ -57,21 +57,23 @@
   this->font = font;
   this->text = NULL;
+  this->externText = NULL;
   this->setAlignment(TEXT_DEFAULT_ALIGNMENT);
   this->texture = 0;
-  this->blending = 1.0f;
-  this->color = Vector(1.0, 1.0, 1.0);
+  this->blending = TEXT_DEFAULT_BLENDING;
+  this->color = TEXT_DEFAULT_COLOR;
   this->setType(type);
 
-  this->setText(FONT_DEFAULT_TEXT);
+  this->setText(NULL);
 }
 
 /**
  *  deletes a Text out of memory
-
-   This also ereases the text from the textList of the TextEngine
+ *
+ * This also ereases the text from the textList of the TextEngine
 */
 Text::~Text()
 {
-  ResourceManager::getInstance()->unload(this->font);
+  if (this->font != NULL)
+    ResourceManager::getInstance()->unload(this->font);
 
   if (this->text)
@@ -83,10 +85,10 @@
  * @param type the type to set.
 */
-void Text::setType(int type)
+void Text::setType(TEXT_RENDER_TYPE type)
 {
   if (this->font->font)
     this->type = type;
   else
-    this->type = TEXT_DYNAMIC;
+    this->type = TEXT_RENDER_DYNAMIC;
 }
 
@@ -95,27 +97,42 @@
  * @param text the new text to set
 */
-void Text::setText(const char* text)
-{
-  if (this->text)
-    delete []this->text;
-  if (text != NULL)
+void Text::setText(const char* text, bool isExtern)
+{
+  if (isExtern)
   {
-    this->text = new char[strlen(text)+1];
-    strcpy(this->text, text);
+    this->externText = text;
+
+    if (unlikely(this->text != NULL))
+    {
+      delete[] this->text;
+      this->text = NULL;
+    }
   }
   else
   {
-    this->text = new char[1];
-    *this->text = '\0';
+    this->externText = NULL;
+    if (this->text)
+      delete[] this->text;
+    if (text != NULL)
+    {
+      this->text = new char[strlen(text)+1];
+      strcpy(this->text, text);
+    }
+    else
+    {
+      this->text = new char[1];
+      *this->text = '\0';
+    }
   }
 
-
   // setting up the Text-Width if DYNAMIC
-  if (this->type == TEXT_DYNAMIC && this->getAlignment() != TEXT_ALIGN_LEFT)
+  if (this->type & TEXT_RENDER_DYNAMIC && this->getAlignment() != TEXT_ALIGN_LEFT)
     {
       Glyph** glyphArray = this->font->getGlyphArray();
 
       int width = 0;
-      char* tmpText = this->text;
+      const char* tmpText = this->externText;
+      if (this->externText == NULL)
+        tmpText = this->text;
       while (*tmpText != '\0')
         {
@@ -177,24 +194,5 @@
   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, GL_MODULATE );
 
-  if(type == TEXT_STATIC)
-    {
-      glBindTexture(GL_TEXTURE_2D, this->texture);
-      glBegin(GL_QUADS);
-
-      glTexCoord2f(this->texCoord.minU, this->texCoord.minV);
-      glVertex2f(this->getAbsCoor2D().x,   this->getAbsCoor2D().y  );
-
-      glTexCoord2f(this->texCoord.maxU, this->texCoord.minV);
-      glVertex2f(this->getAbsCoor2D().x + this->posSize.w, this->getAbsCoor2D().y  );
-
-      glTexCoord2f(this->texCoord.maxU, this->texCoord.maxV);
-      glVertex2f(this->getAbsCoor2D().x + this->posSize.w, getAbsCoor2D().y + this->posSize.h);
-
-      glTexCoord2f(this->texCoord.minU, this->texCoord.maxV);
-      glVertex2f(getAbsCoor2D().x, getAbsCoor2D().y + this->posSize.h);
-
-      glEnd();
-    }
-  else //(if type == TEXT_DYNAMIC)
+  if(likely(type & TEXT_RENDER_DYNAMIC))
     {
       Glyph** glyphArray = this->font->getGlyphArray();
@@ -204,14 +202,35 @@
 //      glRotatef(this->getAbsDir2D(), 0,0,1);
 
-      const char* tmpText = this->text;
+      const char* tmpText = this->externText;
+      if (this->externText == NULL)
+        tmpText = this->text;
       while (*tmpText != '\0')
+      {
+        if(glyphArray[*tmpText])
         {
-          if(glyphArray[*tmpText])
-            {
-              glCallList(glyphArray[*tmpText]->displayList);
-              glTranslatef(glyphArray[*tmpText]->width, 0, 0);
-            }
-          tmpText++;
+          glCallList(glyphArray[*tmpText]->displayList);
+          glTranslatef(glyphArray[*tmpText]->width, 0, 0);
         }
+        tmpText++;
+      }    }
+  else //(if type & TEXT_RENDER_STATIC)
+    {
+      glBindTexture(GL_TEXTURE_2D, this->texture);
+      glBegin(GL_QUADS);
+
+      glTexCoord2f(this->texCoord.minU, this->texCoord.minV);
+      glVertex2f(this->getAbsCoor2D().x,   this->getAbsCoor2D().y  );
+
+      glTexCoord2f(this->texCoord.maxU, this->texCoord.minV);
+      glVertex2f(this->getAbsCoor2D().x + this->posSize.w, this->getAbsCoor2D().y  );
+
+      glTexCoord2f(this->texCoord.maxU, this->texCoord.maxV);
+      glVertex2f(this->getAbsCoor2D().x + this->posSize.w, getAbsCoor2D().y + this->posSize.h);
+
+      glTexCoord2f(this->texCoord.minU, this->texCoord.maxV);
+      glVertex2f(getAbsCoor2D().x, getAbsCoor2D().y + this->posSize.h);
+
+      glEnd();
+
     }
   glPopMatrix();
@@ -223,5 +242,9 @@
 void Text::debug() const
 {
-  PRINT(0)("=== TEXT: %s ===\n", this->text);
+  if (this->externText == NULL)
+    PRINT(0)("=== TEXT: %s ===\n", this->text);
+  else
+    PRINT(0)("=== TEXT: %s ===\n", this->externText);
+
   if (this->getBindNode())
     PRINT(0)("is bind to %s; ref=%p\n", this->getBindNode()->getName(), this->getBindNode());
@@ -808,6 +831,6 @@
       return NULL;
     }
-
-  return new Text(tmpFont, TEXT_DYNAMIC);
+  else
+    return new Text(tmpFont, TEXT_RENDER_DYNAMIC);
 }
 
Index: trunk/src/lib/graphics/text_engine.h
===================================================================
--- trunk/src/lib/graphics/text_engine.h	(revision 5121)
+++ trunk/src/lib/graphics/text_engine.h	(revision 5122)
@@ -39,18 +39,20 @@
 #define  TEXT_ALIGN_CENTER           E2D_ALIGN_CENTER
 #define  TEXT_ALIGN_SCREEN_CENTER    E2D_ALIGN_SCREEN_CENTER
+#define  TEXT_DEFAULT_COLOR          Vector(1.0, 1.0, 1.0)      //!< the default Color (white)
+#define  TEXT_DEFAULT_BLENDING       1.0f                       //!< the default blending of the text, (no blending at all)
 
 /* some default values */
-#define FONT_DEFAULT_SIZE       50                   //!< default size of the Text
-#define FONT_DEFAULT_TEXT       "orxonox 1234567890" //!< default text to display
-#define FONT_DEFAULT_COLOR_R    255                  //!< default red part (color) of the text
-#define FONT_DEFAULT_COLOR_G    255                  //!< default red green (color) of the text
-#define FONT_DEFAULT_COLOR_B    255                  //!< default red blue (color) of the text
-#define FONT_NUM_COLORS         256                  //!< number of colors.
-
-#define FONT_HIGHEST_KNOWN_CHAR 128                  //!< The highest character known to the textEngine.
-
-#define TEXT_DEFAULT_ALIGNMENT  TEXT_ALIGN_CENTER    //!< default alignment
-#define TEXT_STATIC             0                    //!< Static Text
-#define TEXT_DYNAMIC            1                    //!< Dynamic Text
+#define FONT_DEFAULT_SIZE            50                         //!< default size of the Text
+#define FONT_NUM_COLORS              256                        //!< number of colors.
+
+#define FONT_HIGHEST_KNOWN_CHAR      128                        //!< The highest character known to the textEngine.
+
+#define TEXT_DEFAULT_ALIGNMENT       TEXT_ALIGN_CENTER          //!< default alignment
+
+typedef enum TEXT_RENDER_TYPE
+{
+  TEXT_RENDER_STATIC      = 1,
+  TEXT_RENDER_DYNAMIC     = 2
+};
 /**
  * STATIC means: a font, that is only one GL-face.
@@ -103,10 +105,10 @@
 class Text : public Element2D
 {
-  friend class TextEngine;
  public:
+   Text(Font* font, TEXT_RENDER_TYPE type = TEXT_RENDER_DYNAMIC);
   ~Text();
 
-  void setType(int type);
-  void setText(const char* text);
+  void setType(TEXT_RENDER_TYPE type);
+  void setText(const char* text, bool isExtern = false);
   /** @param blending the blending intensity to set (between 0.0 and 1.0) */
   inline void setBlending(float blending) { this->blending = blending; };
@@ -122,6 +124,4 @@
 
  private:
-  Text(Font* font, int type = TEXT_DYNAMIC);
-
   static GLuint loadTexture(SDL_Surface* surface, TexCoord* texCoord);
   static int powerOfTwo(int input);
@@ -130,6 +130,7 @@
   Font*             font;           //!< Font of this text
 
-  int               type;           //!< The type of this Font.
+  TEXT_RENDER_TYPE  type;           //!< The type of this Font.
   char*             text;           //!< The text to display
+  const char*       externText;     //!< the text to Display from an external Source.
   Vector            color;          //!< The color of the font.
   float             blending;       //!< The blending intensity.
@@ -207,5 +208,5 @@
   Text* createText(const char* fontFile,
                    unsigned int fontSize = FONT_DEFAULT_SIZE,
-                   int textType = TEXT_DYNAMIC);
+                   int textType = TEXT_RENDER_DYNAMIC);
 
   void debug() const;
