Index: /trunk/src/lib/util/executor/functor_list.h
===================================================================
--- /trunk/src/lib/util/executor/functor_list.h	(revision 5994)
+++ /trunk/src/lib/util/executor/functor_list.h	(revision 5995)
@@ -139,4 +139,6 @@
   FUNCTOR_LIST(2)(l_STRING, l_UINT);
 
+  FUNCTOR_LIST(3)(l_STRING, l_FLOAT, l_UINT);
+
 
 #endif /* FUNCTOR_LIST */
Index: /trunk/src/world_entities/world_entity.cc
===================================================================
--- /trunk/src/world_entities/world_entity.cc	(revision 5994)
+++ /trunk/src/world_entities/world_entity.cc	(revision 5995)
@@ -44,8 +44,7 @@
   this->setClassID(CL_WORLD_ENTITY, "WorldEntity");
 
-  this->model = NULL;
   this->obbTree = NULL;
 
-  if (root)
+  if (root != NULL)
     this->loadParams(root);
 
@@ -78,5 +77,5 @@
   LoadParam(root, "model", this, WorldEntity, loadModel)
       .describe("the fileName of the model, that should be loaded onto this world-entity. (must be relative to the data-dir)")
-      .defaultValues(2, NULL, 1.0f);
+      .defaultValues(3, NULL, 1.0f, 0);
 
 }
@@ -89,5 +88,5 @@
  * @todo fix this, so it only has one loadModel-Function.
 */
-void WorldEntity::loadModel(const char* fileName, float scaling)
+void WorldEntity::loadModel(const char* fileName, float scaling, unsigned int modelNumber)
 {
   if (fileName != NULL)
@@ -102,5 +101,5 @@
   }
   else
-    this->model = NULL;
+    this->setModel(NULL);
 }
 
@@ -112,13 +111,16 @@
 void WorldEntity::setModel(Model* model, unsigned int modelNumber)
 {
-  if (this->model != NULL)
+  if (this->models.size() <= modelNumber)
+    this->models.resize(modelNumber+1, NULL);
+
+  if (this->models[modelNumber] != NULL)
   { 
-    Resource* resource = ResourceManager::getInstance()->locateResourceByPointer(this->model);
+    Resource* resource = ResourceManager::getInstance()->locateResourceByPointer(this->models[modelNumber]);
     if (resource != NULL)
       ResourceManager::getInstance()->unload(resource, RP_LEVEL);
     else
-      delete this->model;
-  }
-  this->model = model;
+      delete this->models[modelNumber];
+  }
+  this->models[modelNumber] = model;
 
 //   if (this->model != NULL)  
@@ -136,10 +138,10 @@
     delete this->obbTree;
 
-  if (this->model != NULL)
+  if (this->models[0] != NULL)
   {
     PRINTF(4)("creating obb tree\n");
 
 
-    this->obbTree = new OBBTree(depth, (sVec3D*)this->model->getVertexArray(), this->model->getVertexCount());
+    this->obbTree = new OBBTree(depth, (sVec3D*)this->models[0]->getVertexArray(), this->models[0]->getVertexCount());
     return true;
   }
@@ -236,6 +238,6 @@
   glMultMatrixf((float*)matrix);
 
-  if (this->model)
-    this->model->draw();
+  if (this->models[0])
+    this->models[0]->draw();
   glPopMatrix();
 }
Index: /trunk/src/world_entities/world_entity.h
===================================================================
--- /trunk/src/world_entities/world_entity.h	(revision 5994)
+++ /trunk/src/world_entities/world_entity.h	(revision 5995)
@@ -10,4 +10,5 @@
 
 #include "glincl.h"
+#include <vector>
 
 // FORWARD DECLARATION
@@ -29,7 +30,7 @@
   void loadParams(const TiXmlElement* root);
 
-  void loadModel(const char* fileName, float scaling = 1.0f);
+  void loadModel(const char* fileName, float scaling = 1.0f, unsigned int modelNumber = 0);
   void setModel(Model* model, unsigned int modelNumber = 0);
-  Model* getModel(unsigned int modelNumber = 0) const { return this->model; };
+  Model* getModel(unsigned int modelNumber = 0) const { return (this->models.size() > modelNumber)? this->models[modelNumber] : NULL; };
 
   bool buildObbTree(unsigned int depth);
@@ -65,5 +66,5 @@
 
  private:
-  Model*                  model;            //!< The model that should be loaded for this entity.
+  std::vector<Model*>     models;            //!< The model that should be loaded for this entity.
   BVTree*                 obbTree;          //!< this is the obb tree reference needed for collision detection
 
