Index: /orxonox/branches/levelLoader/src/Makefile.am
===================================================================
--- /orxonox/branches/levelLoader/src/Makefile.am	(revision 4248)
+++ /orxonox/branches/levelLoader/src/Makefile.am	(revision 4249)
@@ -48,5 +48,4 @@
 		 track_manager.cc \
 		 track_node.cc \
-		 factory.cc \
 		 util/animation/animation.cc \
 		 util/animation/animation3d.cc \
@@ -91,4 +90,5 @@
 		 util/common/list.cc \
 		 util/resource_manager.cc \
+		 util/loading/factory.cc \
 		 lib/math/vector.cc \
 		 lib/math/curve.cc \
@@ -153,4 +153,5 @@
 		 util/common/list_template.h \
 		 util/resource_manager.h \
+		 util/loading/factory.h \
 		 util/loading/load_param.h \
 		 lib/util/ini_parser.h \
Index: /orxonox/branches/levelLoader/src/Makefile.in
===================================================================
--- /orxonox/branches/levelLoader/src/Makefile.in	(revision 4248)
+++ /orxonox/branches/levelLoader/src/Makefile.in	(revision 4249)
@@ -76,5 +76,5 @@
 am_orxonox_OBJECTS = orxonox.$(OBJEXT) game_loader.$(OBJEXT) \
 	command_node.$(OBJEXT) keynames.$(OBJEXT) camera.$(OBJEXT) \
-	track_manager.$(OBJEXT) track_node.$(OBJEXT) factory.$(OBJEXT) \
+	track_manager.$(OBJEXT) track_node.$(OBJEXT) \
 	animation.$(OBJEXT) animation3d.$(OBJEXT) \
 	animation_player.$(OBJEXT) garbage_collector.$(OBJEXT) \
@@ -93,6 +93,7 @@
 	base_entity.$(OBJEXT) base_object.$(OBJEXT) \
 	ini_parser.$(OBJEXT) substring.$(OBJEXT) list.$(OBJEXT) \
-	resource_manager.$(OBJEXT) vector.$(OBJEXT) curve.$(OBJEXT) \
-	glmenu_imagescreen.$(OBJEXT) benchmark.$(OBJEXT)
+	resource_manager.$(OBJEXT) factory.$(OBJEXT) vector.$(OBJEXT) \
+	curve.$(OBJEXT) glmenu_imagescreen.$(OBJEXT) \
+	benchmark.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
 am__DEPENDENCIES_1 =
@@ -298,5 +299,4 @@
 		 track_manager.cc \
 		 track_node.cc \
-		 factory.cc \
 		 util/animation/animation.cc \
 		 util/animation/animation3d.cc \
@@ -341,4 +341,5 @@
 		 util/common/list.cc \
 		 util/resource_manager.cc \
+		 util/loading/factory.cc \
 		 lib/math/vector.cc \
 		 lib/math/curve.cc \
@@ -403,4 +404,5 @@
 		 util/common/list_template.h \
 		 util/resource_manager.h \
+		 util/loading/factory.h \
 		 util/loading/load_param.h \
 		 lib/util/ini_parser.h \
@@ -1508,4 +1510,20 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o resource_manager.obj `if test -f 'util/resource_manager.cc'; then $(CYGPATH_W) 'util/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/util/resource_manager.cc'; fi`
 
+factory.o: util/loading/factory.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT factory.o -MD -MP -MF "$(DEPDIR)/factory.Tpo" -c -o factory.o `test -f 'util/loading/factory.cc' || echo '$(srcdir)/'`util/loading/factory.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/factory.Tpo" "$(DEPDIR)/factory.Po"; else rm -f "$(DEPDIR)/factory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/loading/factory.cc' object='factory.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/factory.Po' tmpdepfile='$(DEPDIR)/factory.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.o `test -f 'util/loading/factory.cc' || echo '$(srcdir)/'`util/loading/factory.cc
+
+factory.obj: util/loading/factory.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT factory.obj -MD -MP -MF "$(DEPDIR)/factory.Tpo" -c -o factory.obj `if test -f 'util/loading/factory.cc'; then $(CYGPATH_W) 'util/loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/util/loading/factory.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/factory.Tpo" "$(DEPDIR)/factory.Po"; else rm -f "$(DEPDIR)/factory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/loading/factory.cc' object='factory.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/factory.Po' tmpdepfile='$(DEPDIR)/factory.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.obj `if test -f 'util/loading/factory.cc'; then $(CYGPATH_W) 'util/loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/util/loading/factory.cc'; fi`
+
 vector.o: lib/math/vector.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vector.o -MD -MP -MF "$(DEPDIR)/vector.Tpo" -c -o vector.o `test -f 'lib/math/vector.cc' || echo '$(srcdir)/'`lib/math/vector.cc; \
Index: xonox/branches/levelLoader/src/factory.cc
===================================================================
--- /orxonox/branches/levelLoader/src/factory.cc	(revision 4248)
+++ 	(revision )
@@ -1,109 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   ### File Specific:
-   main-programmer: Christian Meyer
-   co-programmer: ...
-*/
-
-
-#include "factory.h"
-#include "game_loader.h"
-
-using namespace std;
-
-/*  --------------------------------------------------
- *		 Factory
- *   --------------------------------------------------
- */
-
-/**
-   \brief constructor
-   
-   set everything to zero and define factoryName
-*/
-Factory::Factory (const char* name)
-{
-  this->factoryName = NULL;
-  this->setFactoryName(name);
-  next = NULL;
-  
-  initialize();
-}
-
-/**
-   \brief destructor
-   
-   clear the Q
-*/
-Factory::~Factory ()
-{
-  //  printf("%s\n", this->factoryName);
-  //  Factory* tmpDel = this->next;
-  //  this->next = NULL;
-  if (this->next)
-    delete this->next;
-}
-
-void Factory::setFactoryName(const char* name)
-{
-  if (factoryName)
-    delete factoryName;
-  factoryName = new char[strlen(name)+1];
-  strcpy(factoryName, name);
-}
-
-
-/**
-   \brief generates the associated object from data
-*/
-BaseObject* Factory::fabricate( TiXmlElement* data)
-{
-  return NULL;
-}
-
-/**
-   \brief make this particular factory known to the LevelFactory
-*/
-void Factory::initialize()
-{
-  GameLoader* gl = GameLoader::getInstance();
-  gl->registerFactory( this);
-}
-
-/**
-   \brief add a Factory to the Q
-*/
-void Factory::registerFactory( Factory* factory)
-{
-  if( next == NULL) setNext( factory);
-  else next->registerFactory( factory);
-}
-
-const char* grabParameter(const TiXmlElement* root, const char* name)
-{
-  const TiXmlElement* element;
-  const TiXmlNode* node;
-	
-  assert( root != NULL);
-  assert( name != NULL);
-	
-  element = root->FirstChildElement( name);
-  if( element == NULL) return NULL;
-	
-  node = element->FirstChild();
-  while( node != NULL)
-    {
-      if( node->ToText()) return node->Value();
-      node = node->NextSibling();
-    }
-  return NULL;
-}
-
Index: xonox/branches/levelLoader/src/factory.h
===================================================================
--- /orxonox/branches/levelLoader/src/factory.h	(revision 4248)
+++ 	(revision )
@@ -1,85 +1,0 @@
-/*! 
-    \file factory.h
-    \brief philosophy stuff
-*/
-
-#ifndef _FACTORY_H
-#define _FACTORY_H
-
-class BaseObject;
-
-#include "tinyxml.h"
-#include "load_param.h"
-#include "debug.h"
-
-/** 
-    Creates a factory to a Loadable Class.
-    this should be used at the beginning of all the Classes that should be loadable (in the cc-file)
-*/
-#define CREATE_FACTORY(x) tFactory<x>* global_ ## x ## Factory = new tFactory<x>(#x)
-
-
-		
-//! The Factory is
-/**
-   Very philosophic description, huh?
-*/
-class Factory {
-
- public:
-  Factory (const char* name = NULL);
-  ~Factory ();
-  
-
-  virtual BaseObject* fabricate( TiXmlElement* root);
-  void initialize();
-  void registerFactory( Factory* factory);
-  void setFactoryName(const char* name);
-  const char* getFactoryName() {return factoryName;};
-  void setNext( Factory* factory) {next = factory;}
-  Factory* getNext() {return next;}
-	
- private:
-  char* factoryName;
-	
-  Factory* next;
-};
-
-template<class T> class tFactory : public Factory
-{
- public:
-  tFactory(const char* name);
-  virtual ~tFactory();
-  
-  private:
-  BaseObject* fabricate( TiXmlElement* root);
-};
-
-template<class T>
-tFactory<T>::tFactory(const char* name) : Factory(name)
-{
-  PRINTF(5)("fileName: %s\n", name);
-}
-  
-
-template<class T>
-tFactory<T>::~tFactory()
-{}
-
-template<class T>
-BaseObject* tFactory<T>::fabricate( TiXmlElement* root) 
-{ 
-  if(!strcmp(root->Value(), getFactoryName()))
-    return new T ( root);
-  else if( getNext() != NULL) 
-    return getNext()->fabricate( root);
-  else 
-    return NULL;
-}
-
-// helper function
-
-const char* grabParameter(const TiXmlElement* root, const char* name);
-
-#endif /* _FACTORY_H */
-
Index: /orxonox/branches/levelLoader/src/util/loading/factory.cc
===================================================================
--- /orxonox/branches/levelLoader/src/util/loading/factory.cc	(revision 4249)
+++ /orxonox/branches/levelLoader/src/util/loading/factory.cc	(revision 4249)
@@ -0,0 +1,109 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Christian Meyer
+   co-programmer: ...
+*/
+
+
+#include "factory.h"
+#include "game_loader.h"
+
+using namespace std;
+
+/*  --------------------------------------------------
+ *		 Factory
+ *   --------------------------------------------------
+ */
+
+/**
+   \brief constructor
+   
+   set everything to zero and define factoryName
+*/
+Factory::Factory (const char* name)
+{
+  this->factoryName = NULL;
+  this->setFactoryName(name);
+  next = NULL;
+  
+  initialize();
+}
+
+/**
+   \brief destructor
+   
+   clear the Q
+*/
+Factory::~Factory ()
+{
+  //  printf("%s\n", this->factoryName);
+  //  Factory* tmpDel = this->next;
+  //  this->next = NULL;
+  if (this->next)
+    delete this->next;
+}
+
+void Factory::setFactoryName(const char* name)
+{
+  if (factoryName)
+    delete factoryName;
+  factoryName = new char[strlen(name)+1];
+  strcpy(factoryName, name);
+}
+
+
+/**
+   \brief generates the associated object from data
+*/
+BaseObject* Factory::fabricate( TiXmlElement* data)
+{
+  return NULL;
+}
+
+/**
+   \brief make this particular factory known to the LevelFactory
+*/
+void Factory::initialize()
+{
+  GameLoader* gl = GameLoader::getInstance();
+  gl->registerFactory( this);
+}
+
+/**
+   \brief add a Factory to the Q
+*/
+void Factory::registerFactory( Factory* factory)
+{
+  if( next == NULL) setNext( factory);
+  else next->registerFactory( factory);
+}
+
+const char* grabParameter(const TiXmlElement* root, const char* name)
+{
+  const TiXmlElement* element;
+  const TiXmlNode* node;
+	
+  assert( root != NULL);
+  assert( name != NULL);
+	
+  element = root->FirstChildElement( name);
+  if( element == NULL) return NULL;
+	
+  node = element->FirstChild();
+  while( node != NULL)
+    {
+      if( node->ToText()) return node->Value();
+      node = node->NextSibling();
+    }
+  return NULL;
+}
+
Index: /orxonox/branches/levelLoader/src/util/loading/factory.h
===================================================================
--- /orxonox/branches/levelLoader/src/util/loading/factory.h	(revision 4249)
+++ /orxonox/branches/levelLoader/src/util/loading/factory.h	(revision 4249)
@@ -0,0 +1,82 @@
+/*! 
+    \file factory.h
+    \brief philosophy stuff
+*/
+
+#ifndef _FACTORY_H
+#define _FACTORY_H
+
+class BaseObject;
+
+#include "tinyxml.h"
+#include "load_param.h"
+#include "debug.h"
+
+/** 
+    Creates a factory to a Loadable Class.
+    this should be used at the beginning of all the Classes that should be loadable (in the cc-file)
+*/
+#define CREATE_FACTORY(x) tFactory<x>* global_ ## x ## Factory = new tFactory<x>(#x)
+
+
+		
+//! The Factory is
+class Factory {
+
+ public:
+  Factory (const char* name = NULL);
+  ~Factory ();
+  
+
+  virtual BaseObject* fabricate( TiXmlElement* root);
+  void initialize();
+  void registerFactory( Factory* factory);
+  void setFactoryName(const char* name);
+  const char* getFactoryName() {return factoryName;};
+  void setNext( Factory* factory) {next = factory;}
+  Factory* getNext() {return next;}
+	
+ private:
+  char* factoryName;
+	
+  Factory* next;
+};
+
+template<class T> class tFactory : public Factory
+{
+ public:
+  tFactory(const char* name);
+  virtual ~tFactory();
+  
+  private:
+  BaseObject* fabricate( TiXmlElement* root);
+};
+
+template<class T>
+tFactory<T>::tFactory(const char* name) : Factory(name)
+{
+  PRINTF(5)("fileName: %s\n", name);
+}
+  
+
+template<class T>
+tFactory<T>::~tFactory()
+{}
+
+template<class T>
+BaseObject* tFactory<T>::fabricate( TiXmlElement* root) 
+{ 
+  if(!strcmp(root->Value(), getFactoryName()))
+    return new T ( root);
+  else if( getNext() != NULL) 
+    return getNext()->fabricate( root);
+  else 
+    return NULL;
+}
+
+// helper function
+
+const char* grabParameter(const TiXmlElement* root, const char* name);
+
+#endif /* _FACTORY_H */
+
Index: /orxonox/branches/levelLoader/src/util/loading/load_param.h
===================================================================
--- /orxonox/branches/levelLoader/src/util/loading/load_param.h	(revision 4248)
+++ /orxonox/branches/levelLoader/src/util/loading/load_param.h	(revision 4249)
@@ -7,9 +7,105 @@
 #include "substring.h"
 
+/**
+   useable FunctionParameters are:
+   l_INT:    int
+   l_LONG:   long
+   l_SHORT:  short
+   l_FLOAT:  float
+   l_STRING: const char*
+*/
+
+#define l_INT_TYPE int
+#define l_INT_FUNC atoi
+
+#define l_LONG_TYPE long
+#define l_LONG_FUNC atol
+
+#define l_SHORT_TYPE short
+#define l_SHORT_FUNC atoi
+
+#define l_FLOAT_TYPE float
+#define l_FLOAT_FUNC atof
+
+#define l_STRING_TYPE const char*
+#define l_STRING_FUNC 
+
+
+/**
+   \brief a Macro to easily implement many different Constructors for the LoadParam-Class
+   \param type1 The type of the first functionParameter
+*/
+#define LoadParam1(type1) \
+ LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE)) \
+    { \
+      const char* loadString = grabParameter(root, paramName); \
+      if (loadString != NULL) \
+	(*pt2Object.*function)(type1##_FUNC(loadString)); \
+      else \
+	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+    }
+
+
+// 2. TYPES
+#define LoadParam2(type1, type2)\
+ LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE, type2##_TYPE)) \
+    { \
+      const char* loadString = grabParameter(root, paramName); \
+      if (loadString != NULL) \
+	{ \
+	  SubString subLoads(loadString); \
+	  if (subLoads.getCount() == 2) \
+	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1))); \
+	  else \
+	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+		      paramName, pt2Object->getClassName(), 2, subLoads.getCount()); \
+	} \
+      else \
+	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+    };
+
+
+// 3. TYPES
+#define LoadParam3(type1, type2, type3)\
+ LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE, type2##_TYPE, type3##_TYPE)) \
+    { \
+      const char* loadString = grabParameter(root, paramName); \
+      if (loadString != NULL) \
+	{ \
+	  SubString subLoads(loadString); \
+	  if (subLoads.getCount() == 3) \
+	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2))); \
+	  else \
+	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+		      paramName, pt2Object->getClassName(), 3, subLoads.getCount()); \
+	} \
+      else \
+	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+    };
+
+
+// 4. TYPES
+#define LoadParam4(type1, type2, type3, type4)\
+ LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE, type2##_TYPE, type3##_TYPE, type4##_TYPE)) \
+    { \
+      const char* loadString = grabParameter(root, paramName); \
+      if (loadString != NULL) \
+	{ \
+	  SubString subLoads(loadString); \
+	  if (subLoads.getCount() == 4) \
+	    (*pt2Object.*function)(type1##_FUNC(subLoads.getString(0)), type2##_FUNC(subLoads.getString(1)), type3##_FUNC(subLoads.getString(2)), type4##_FUNC(subLoads.getString(3))); \
+	  else \
+	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n", \
+		      paramName, pt2Object->getClassName(), 4, subLoads.getCount()); \
+	} \
+      else \
+	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
+    };
+
 // abstract base class
 class baseLoadParam
 {
  public:
-  //  virtual void Call(const char* string)=0;        // call using function
+  void description(const char* description);
 };
 
@@ -19,190 +115,19 @@
 {
  public:
-  // 1. CONST CHAR*
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	(*pt2Object.*function)(loadString);
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
+  LoadParam1(l_STRING);
+  LoadParam2(l_STRING, l_STRING);
+  LoadParam3(l_STRING, l_STRING, l_STRING);
+  LoadParam4(l_STRING, l_STRING, l_STRING, l_STRING);
 
-  // 2. CONST CHAR*
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*, const char*))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 2)
-	    (*pt2Object.*function)(subLoads.getString(0), subLoads.getString(1));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 2, subLoads.getCount());
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
+  LoadParam1(l_INT);
+  LoadParam2(l_INT, l_INT);
+  LoadParam3(l_INT, l_INT, l_INT);
+  LoadParam4(l_INT, l_INT, l_INT, l_INT);
 
-  // 3. CONST CHAR*
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*, const char*, const char*))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 3)
-	    (*pt2Object.*function)(subLoads.getString(0), subLoads.getString(1), subLoads.getString(2));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 3, subLoads.getCount());
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
+  LoadParam1(l_FLOAT);
+  LoadParam2(l_FLOAT, l_FLOAT);
+  LoadParam3(l_FLOAT, l_FLOAT, l_FLOAT);
+  LoadParam4(l_FLOAT, l_FLOAT, l_FLOAT, l_FLOAT);
 
-  // 4. CONST CHAR*
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const char*, const char*, const char*, const char*))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 4)
-	    (*pt2Object.*function)(subLoads.getString(0), subLoads.getString(1), subLoads.getString(2), subLoads.getString(3));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 4, subLoads.getCount());
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 1. FLOAT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	(*pt2Object.*function)(atof(loadString));
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 2. FLOAT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float, float))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 2)
-	    (*pt2Object.*function)(atof(subLoads.getString(0)), atof(subLoads.getString(1)));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 2, subLoads.getCount());
-	    
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 3. FLOAT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float, float, float))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 3)
-	    (*pt2Object.*function)(atof(subLoads.getString(0)), atof(subLoads.getString(1)), atof(subLoads.getString(2)));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 3, subLoads.getCount());
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 4. FLOAT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(float, float, float, float))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 4)
-	    (*pt2Object.*function)(atof(subLoads.getString(0)), atof(subLoads.getString(1)), atof(subLoads.getString(2)), atof(subLoads.getString(3)));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 4, subLoads.getCount());
-
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 1. INT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	(*pt2Object.*function)(atoi(loadString));
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 2. INT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int, int))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 2)
-	    (*pt2Object.*function)(atoi(subLoads.getString(0)), atoi(subLoads.getString(1)));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 2, subLoads.getCount());
-
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 3. INT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int, int, int))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 3)
-	    (*pt2Object.*function)(atoi(subLoads.getString(0)), atoi(subLoads.getString(1)), atoi(subLoads.getString(2)));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 3, subLoads.getCount());
-
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
-
-  // 4. INT
-  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(int, int, int, int))
-    {
-      const char* loadString = grabParameter(root, paramName);
-      if (loadString != NULL)
-	{
-	  SubString subLoads(loadString);
-	  if (subLoads.getCount() == 4)
-	    (*pt2Object.*function)(atoi(subLoads.getString(0)), atoi(subLoads.getString(1)), atoi(subLoads.getString(2)), atoi(subLoads.getString(3)));
-	  else
-	    PRINTF(2)("Not loaded Parameter %s of %s, because wrong count of arguments.\n -> Should have %d but have %d\n",
-		      paramName, pt2Object->getClassName(), 4, subLoads.getCount());
-	}
-      else 
-	PRINTF(2)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName());
-    };
 
 };
Index: /orxonox/branches/levelLoader/src/world_entities/skybox.cc
===================================================================
--- /orxonox/branches/levelLoader/src/world_entities/skybox.cc	(revision 4248)
+++ /orxonox/branches/levelLoader/src/world_entities/skybox.cc	(revision 4249)
@@ -46,7 +46,9 @@
    \param fileName the file to take as input for the SkyBox
 */
-SkyBox::SkyBox(char* fileName)
+SkyBox::SkyBox(const char* fileName)
 {
   this->preInit();
+  if (fileName)
+    this->setTextureAndType(fileName, ".jpg");
   this->postInit();
 }
Index: /orxonox/branches/levelLoader/src/world_entities/skybox.h
===================================================================
--- /orxonox/branches/levelLoader/src/world_entities/skybox.h	(revision 4248)
+++ /orxonox/branches/levelLoader/src/world_entities/skybox.h	(revision 4249)
@@ -21,5 +21,5 @@
 {
  public:
-  SkyBox(char* fileName = NULL);
+  SkyBox(const char* fileName = NULL);
   SkyBox(TiXmlElement* root);
 
