Index: /orxonox/branches/textEngine/src/lib/graphics/font/text_engine.cc
===================================================================
--- /orxonox/branches/textEngine/src/lib/graphics/font/text_engine.cc	(revision 3774)
+++ /orxonox/branches/textEngine/src/lib/graphics/font/text_engine.cc	(revision 3775)
@@ -834,7 +834,8 @@
   Font* tmpFont;
   Text* newText;
-  
-
-  tmpFont = (Font*)ResourceManager::getInstance()->load(fontFile, TTF, RP_GAME);
+  Vector tmpVec;
+
+  tmpVec = Vector(r, g, b);
+  tmpFont = (Font*)ResourceManager::getInstance()->load(fontFile, TTF, RP_GAME, &fontSize, &tmpVec);
   if (!tmpFont)
     {
@@ -861,5 +862,4 @@
   ResourceManager::getInstance()->unload(text->font);
   textList->remove(text);
-
 }
 
Index: /orxonox/branches/textEngine/src/lib/util/resource_manager.cc
===================================================================
--- /orxonox/branches/textEngine/src/lib/util/resource_manager.cc	(revision 3774)
+++ /orxonox/branches/textEngine/src/lib/util/resource_manager.cc	(revision 3775)
@@ -142,5 +142,5 @@
    \returns a pointer to a desired Resource.
 */
-void* ResourceManager::load(const char* fileName, ResourcePriority prio)
+void* ResourceManager::load(const char* fileName, ResourcePriority prio, void* param1, void* param2, void* param3)
 {
   ResourceType tmpType;
@@ -164,5 +164,5 @@
     tmpType = IMAGE;
 
-  return this->load(fileName, tmpType, prio);
+  return this->load(fileName, tmpType, prio, param1, param2, param3);
 }
 
@@ -174,8 +174,8 @@
    \returns a pointer to a desired Resource.
 */
-void* ResourceManager::load(const char* fileName, ResourceType type, ResourcePriority prio)
+void* ResourceManager::load(const char* fileName, ResourceType type, ResourcePriority prio, void* param1, void* param2, void* param3)
 {
   // searching if the resource was loaded before.
-  Resource* tmpResource = this->locateResourceByName(fileName);
+  Resource* tmpResource = this->locateResourceByInfo(fileName, type, param1, param2,param3);
   if (tmpResource) // if the resource was not loaded before.
     {
@@ -204,27 +204,59 @@
 	{
 	case OBJ:
+	  if (param1)
+	    tmpResource->modelSize = *(float*)param1;
+	  else
+	    tmpResource->modelSize = 1.0;
+
 	  if(isFile(fullName))
-	    tmpResource->pointer = new OBJModel(fullName);
+	    tmpResource->pointer = new OBJModel(fullName, tmpResource->modelSize);
 	  else
 	    {
 	      PRINTF(2)("Sorry, %s does not exist. Loading a cube-Model instead\n", fullName);
-	      tmpResource->pointer = ResourceManager::load("cube", PRIM);
+	      tmpResource->pointer = ResourceManager::load("cube", PRIM, prio, &tmpResource->modelSize);
 	    }
 	  break;
 	case PRIM:
+	  if (param1)
+	    tmpResource->modelSize = *(float*)param1;
+	  else
+	    tmpResource->modelSize = 1.0;
+
 	  if (!strcmp(tmpResource->name, "cube"))
-	    tmpResource->pointer = new PrimitiveModel(CUBE);
+	    tmpResource->pointer = new PrimitiveModel(CUBE, tmpResource->modelSize);
 	  else if (!strcmp(tmpResource->name, "sphere"))
-	    tmpResource->pointer = new PrimitiveModel(SPHERE);
+	    tmpResource->pointer = new PrimitiveModel(SPHERE, tmpResource->modelSize);
 	  else if (!strcmp(tmpResource->name, "plane"))
-	    tmpResource->pointer = new PrimitiveModel(PLANE);
+	    tmpResource->pointer = new PrimitiveModel(PLANE, tmpResource->modelSize);
 	  else if (!strcmp(tmpResource->name, "cylinder"))
-	    tmpResource->pointer = new PrimitiveModel(CYLINDER);
+	    tmpResource->pointer = new PrimitiveModel(CYLINDER, tmpResource->modelSize);
 	  else if (!strcmp(tmpResource->name, "cone"))
-	    tmpResource->pointer = new PrimitiveModel(CONE);
+	    tmpResource->pointer = new PrimitiveModel(CONE, tmpResource->modelSize);
 	  break;
 	case TTF:
+	    if (param1)
+	      tmpResource->ttfSize = *(int*)param1;
+	    else
+	      tmpResource->ttfSize = FONT_DEFAULT_SIZE;
+	    if (param2)
+	      {
+		Vector* tmpVec = (Vector*)param2;
+		tmpResource->ttfColorR = (int)tmpVec->x;
+		tmpResource->ttfColorG = (int)tmpVec->y;
+		tmpResource->ttfColorB = (int)tmpVec->z;
+	      }
+	    else
+	      {
+		tmpResource->ttfColorR = FONT_DEFAULT_COLOR_R;
+		tmpResource->ttfColorG = FONT_DEFAULT_COLOR_G;
+		tmpResource->ttfColorB = FONT_DEFAULT_COLOR_B;
+	      }
+	    
 	  if(isFile(fullName))
-	    tmpResource->pointer = new Font(fullName);
+	    tmpResource->pointer = new Font(fullName,
+					    tmpResource->ttfSize,
+					    tmpResource->ttfColorR,
+					    tmpResource->ttfColorG,
+					    tmpResource->ttfColorB);
 	  else
 	    PRINTF(2)("Sorry, %s does not exist. Not loading Font\n", fullName);
@@ -268,6 +300,12 @@
       delete []fullName;
     }
-
-  return tmpResource->pointer;
+  if (tmpResource->pointer)
+    return tmpResource->pointer;
+  else 
+    {
+      PRINTF(2)("Resource %s could not be loaded\n", fileName);
+      delete tmpResource;
+      return NULL;
+    }
 }
 
@@ -354,9 +392,9 @@
 
 /**
-   \brief Searches for a Resource by Name
+   \brief Searches for a Resource by some information
    \param fileName The name to look for
    \returns a Pointer to the Resource if found, NULL otherwise.
 */
-Resource* ResourceManager::locateResourceByName(const char* fileName)
+Resource* ResourceManager::locateResourceByInfo(const char* fileName, ResourceType type, void* param1, void* param2, void* param3)
 {
   //  Resource* enumRes = resourceList->enumerate();
@@ -365,8 +403,54 @@
   while (enumRes)
     {
-      if (!strcmp(fileName, enumRes->name))
-	{
-	  delete iterator;
-	  return enumRes;
+      if (enumRes->type == type && !strcmp(fileName, enumRes->name))
+	{
+	  bool match = false;
+	  bool subMatch = false;
+	  switch (type)
+	    {
+	    case PRIM:
+	    case OBJ:
+	      if (!param1)
+		{
+		  if (enumRes->modelSize == 1.0)
+		    match = true;
+		}
+	      else if (enumRes->modelSize == *(float*)param1)
+		match = true;
+	      break;
+	    case TTF:
+	      if (!param1)
+		{
+		  if (enumRes->ttfSize == FONT_DEFAULT_SIZE)
+		    subMatch = true;
+		}
+	      else if (enumRes->modelSize =- *(int*)param1)
+		subMatch = true;
+	      if(subMatch)
+		{
+		  Vector* tmpVec = (Vector*)param2;
+		  if (!param2)
+		    {
+		      if(enumRes->ttfColorR == FONT_DEFAULT_COLOR_R &&
+			 enumRes->ttfColorG == FONT_DEFAULT_COLOR_G &&
+			 enumRes->ttfColorB == FONT_DEFAULT_COLOR_B )
+			match = true;
+		    }
+		  else if (enumRes->ttfColorR == (int)tmpVec->x &&
+			   enumRes->ttfColorG == (int)tmpVec->y &&
+			   enumRes->ttfColorB == (int)tmpVec->z )
+		    match = true;
+		}
+
+	      break;
+	    default:
+	      match = true;
+	      break;
+	    }
+	  if (match)
+	    {
+	      delete iterator;
+	      return enumRes;
+	    }
 	}
       enumRes = iterator->nextElement();
Index: /orxonox/branches/textEngine/src/lib/util/resource_manager.h
===================================================================
--- /orxonox/branches/textEngine/src/lib/util/resource_manager.h	(revision 3774)
+++ /orxonox/branches/textEngine/src/lib/util/resource_manager.h	(revision 3775)
@@ -33,9 +33,16 @@
 {
   void* pointer;             //!< Pointer to the Resource.
+  int count;                 //!< How many times this Resource has been loaded.
   
   char* name;                //!< Name of the Resource.
   ResourceType type;         //!< ResourceType of this Resource.
   ResourcePriority prio;     //!< The Priority of this resource. (This will only be increased)
-  int count;                 //!< How many times this Resource has been loaded.
+
+  // more specific
+  float modelSize;
+  unsigned int ttfSize;
+  unsigned char ttfColorR;
+  unsigned char ttfColorG;
+  unsigned char ttfColorB;
 };
 
@@ -60,6 +67,8 @@
   bool setDataDir(char* dataDir);
   bool addImageDir(char* imageDir);
-  void* load(const char* fileName, ResourcePriority prio = RP_NO);
-  void* load(const char* fileName, ResourceType type, ResourcePriority prio = RP_NO);
+  void* load(const char* fileName, ResourcePriority prio = RP_NO,
+	     void* param1 = NULL, void* param2 = NULL, void* param3 = NULL);
+  void* load(const char* fileName, ResourceType type, ResourcePriority prio = RP_NO,
+	     void* param1 = NULL, void* param2 = NULL, void* param3 = NULL);
   bool unload(void* pointer, ResourcePriority prio = RP_NO);
   bool unload(Resource* resource, ResourcePriority = RP_NO);
@@ -76,5 +85,5 @@
 
 
-  Resource* locateResourceByName(const char* fileName);
+  Resource* locateResourceByInfo(const char* fileName, ResourceType type, void* param1, void* param2, void* param3);
   Resource* locateResourceByPointer(const void* pointer);
   
Index: /orxonox/branches/textEngine/src/story_entities/world.cc
===================================================================
--- /orxonox/branches/textEngine/src/story_entities/world.cc	(revision 3774)
+++ /orxonox/branches/textEngine/src/story_entities/world.cc	(revision 3775)
@@ -351,6 +351,7 @@
 	    trackManager->condition(2, LEFTRIGHT, this->localPlayer);
 	    this->glmis->step();
-	    this->testText = TextEngine::getInstance()->createText("fonts/earth.ttf");
-	    testText->setText("test");
+
+	    this->testText = TextEngine::getInstance()->createText("fonts/earth.ttf", 30, TEXT_DYNAMIC, 10, 100, 0);
+	    testText->setText("ORXONOX 123");
 	    testText->setBindNode(tn);
 
