Index: branches/world_entities/Makefile.in
===================================================================
--- branches/world_entities/Makefile.in	(revision 5527)
+++ branches/world_entities/Makefile.in	(revision 5558)
@@ -41,5 +41,5 @@
 	$(srcdir)/doc/documentation.am $(top_srcdir)/configure AUTHORS \
 	COPYING ChangeLog INSTALL NEWS config.guess config.sub depcomp \
-	install-sh ltmain.sh missing mkinstalldirs
+	install-sh missing mkinstalldirs
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
Index: branches/world_entities/src/Makefile.am
===================================================================
--- branches/world_entities/src/Makefile.am	(revision 5527)
+++ branches/world_entities/src/Makefile.am	(revision 5558)
@@ -66,4 +66,5 @@
                   world_entities/weapons/rocket.cc \
                   world_entities/weapons/laser.cc \
+                  world_entities/weapons/aim.cc \
                   world_entities/weapons/crosshair.cc \
                   world_entities/power_ups/power_up.cc \
@@ -100,4 +101,5 @@
                  world_entities/weapons/rocket.h \
                  world_entities/weapons/laser.h \
+                 world_entities/weapons/aim.h \
                  world_entities/weapons/crosshair.h \
                  world_entities/power_ups/power_up.h \
@@ -137,6 +139,6 @@
 SUBDIRS = lib \
           util \
-          $(SUB_PROGS) \
-          .
+          . \
+          $(SUB_PROGS)
 
 
Index: branches/world_entities/src/Makefile.in
===================================================================
--- branches/world_entities/src/Makefile.in	(revision 5527)
+++ branches/world_entities/src/Makefile.in	(revision 5558)
@@ -67,6 +67,6 @@
 	orxonox-aiming_turret.$(OBJEXT) orxonox-test_bullet.$(OBJEXT) \
 	orxonox-rocket.$(OBJEXT) orxonox-laser.$(OBJEXT) \
-	orxonox-crosshair.$(OBJEXT) orxonox-power_up.$(OBJEXT) \
-	orxonox-turret_power_up.$(OBJEXT) \
+	orxonox-aim.$(OBJEXT) orxonox-crosshair.$(OBJEXT) \
+	orxonox-power_up.$(OBJEXT) orxonox-turret_power_up.$(OBJEXT) \
 	orxonox-laser_power_up.$(OBJEXT) orxonox-benchmark.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
@@ -91,5 +91,5 @@
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = lib util subprojects .
+DIST_SUBDIRS = lib util . subprojects
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -261,4 +261,5 @@
                   world_entities/weapons/rocket.cc \
                   world_entities/weapons/laser.cc \
+                  world_entities/weapons/aim.cc \
                   world_entities/weapons/crosshair.cc \
                   world_entities/power_ups/power_up.cc \
@@ -295,4 +296,5 @@
                  world_entities/weapons/rocket.h \
                  world_entities/weapons/laser.h \
+                 world_entities/weapons/aim.h \
                  world_entities/weapons/crosshair.h \
                  world_entities/power_ups/power_up.h \
@@ -326,6 +328,6 @@
 SUBDIRS = lib \
           util \
-          $(SUB_PROGS) \
-          .
+          . \
+          $(SUB_PROGS)
 
 all: all-recursive
@@ -342,7 +344,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/Makefile
+	  $(AUTOMAKE) --foreign  src/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -395,4 +397,5 @@
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-aim.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-aiming_turret.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-benchmark.Po@am__quote@
@@ -789,4 +792,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-laser.obj `if test -f 'world_entities/weapons/laser.cc'; then $(CYGPATH_W) 'world_entities/weapons/laser.cc'; else $(CYGPATH_W) '$(srcdir)/world_entities/weapons/laser.cc'; fi`
+
+orxonox-aim.o: world_entities/weapons/aim.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-aim.o -MD -MP -MF "$(DEPDIR)/orxonox-aim.Tpo" -c -o orxonox-aim.o `test -f 'world_entities/weapons/aim.cc' || echo '$(srcdir)/'`world_entities/weapons/aim.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-aim.Tpo" "$(DEPDIR)/orxonox-aim.Po"; else rm -f "$(DEPDIR)/orxonox-aim.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='world_entities/weapons/aim.cc' object='orxonox-aim.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-aim.o `test -f 'world_entities/weapons/aim.cc' || echo '$(srcdir)/'`world_entities/weapons/aim.cc
+
+orxonox-aim.obj: world_entities/weapons/aim.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-aim.obj -MD -MP -MF "$(DEPDIR)/orxonox-aim.Tpo" -c -o orxonox-aim.obj `if test -f 'world_entities/weapons/aim.cc'; then $(CYGPATH_W) 'world_entities/weapons/aim.cc'; else $(CYGPATH_W) '$(srcdir)/world_entities/weapons/aim.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-aim.Tpo" "$(DEPDIR)/orxonox-aim.Po"; else rm -f "$(DEPDIR)/orxonox-aim.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='world_entities/weapons/aim.cc' object='orxonox-aim.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-aim.obj `if test -f 'world_entities/weapons/aim.cc'; then $(CYGPATH_W) 'world_entities/weapons/aim.cc'; else $(CYGPATH_W) '$(srcdir)/world_entities/weapons/aim.cc'; fi`
 
 orxonox-crosshair.o: world_entities/weapons/crosshair.cc
Index: branches/world_entities/src/defs/include_paths.am
===================================================================
--- branches/world_entities/src/defs/include_paths.am	(revision 5527)
+++ branches/world_entities/src/defs/include_paths.am	(revision 5558)
@@ -1,5 +1,4 @@
 AM_CXXFLAGS=-I$(MAINSRCDIR)
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/world_entities
-AM_CXXFLAGS+=-I$(MAINSRCDIR)/world_entities/weapons
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/story_entities
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib
Index: branches/world_entities/src/lib/Makefile.am
===================================================================
--- branches/world_entities/src/lib/Makefile.am	(revision 5527)
+++ branches/world_entities/src/lib/Makefile.am	(revision 5558)
@@ -39,4 +39,5 @@
                         util/color.cc \
                         util/helper_functions.cc \
+                        util/multi_type.cc \
                         math/vector.cc \
                         math/curve.cc
@@ -55,4 +56,5 @@
                         util/color.h \
                         util/helper_functions.h \
+                        util/multi_type.h \
                         math/vector.h \
                         math/curve.h
Index: branches/world_entities/src/lib/Makefile.in
===================================================================
--- branches/world_entities/src/lib/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/Makefile.in	(revision 5558)
@@ -57,5 +57,6 @@
 	base_object.$(OBJEXT) class_list.$(OBJEXT) \
 	ini_parser.$(OBJEXT) substring.$(OBJEXT) color.$(OBJEXT) \
-	helper_functions.$(OBJEXT) vector.$(OBJEXT) curve.$(OBJEXT)
+	helper_functions.$(OBJEXT) multi_type.$(OBJEXT) \
+	vector.$(OBJEXT) curve.$(OBJEXT)
 libORXlibs_a_OBJECTS = $(am_libORXlibs_a_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
@@ -227,4 +228,5 @@
                         util/color.cc \
                         util/helper_functions.cc \
+                        util/multi_type.cc \
                         math/vector.cc \
                         math/curve.cc
@@ -243,4 +245,5 @@
                         util/color.h \
                         util/helper_functions.h \
+                        util/multi_type.h \
                         math/vector.h \
                         math/curve.h
@@ -270,7 +273,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -310,4 +313,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/helper_functions.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ini_parser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi_type.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_node.Po@am__quote@
@@ -440,4 +444,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o helper_functions.obj `if test -f 'util/helper_functions.cc'; then $(CYGPATH_W) 'util/helper_functions.cc'; else $(CYGPATH_W) '$(srcdir)/util/helper_functions.cc'; fi`
+
+multi_type.o: util/multi_type.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT multi_type.o -MD -MP -MF "$(DEPDIR)/multi_type.Tpo" -c -o multi_type.o `test -f 'util/multi_type.cc' || echo '$(srcdir)/'`util/multi_type.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/multi_type.Tpo" "$(DEPDIR)/multi_type.Po"; else rm -f "$(DEPDIR)/multi_type.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/multi_type.cc' object='multi_type.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o multi_type.o `test -f 'util/multi_type.cc' || echo '$(srcdir)/'`util/multi_type.cc
+
+multi_type.obj: util/multi_type.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT multi_type.obj -MD -MP -MF "$(DEPDIR)/multi_type.Tpo" -c -o multi_type.obj `if test -f 'util/multi_type.cc'; then $(CYGPATH_W) 'util/multi_type.cc'; else $(CYGPATH_W) '$(srcdir)/util/multi_type.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/multi_type.Tpo" "$(DEPDIR)/multi_type.Po"; else rm -f "$(DEPDIR)/multi_type.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/multi_type.cc' object='multi_type.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o multi_type.obj `if test -f 'util/multi_type.cc'; then $(CYGPATH_W) 'util/multi_type.cc'; else $(CYGPATH_W) '$(srcdir)/util/multi_type.cc'; fi`
 
 vector.o: math/vector.cc
Index: branches/world_entities/src/lib/collision_detection/Makefile.in
===================================================================
--- branches/world_entities/src/lib/collision_detection/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/collision_detection/Makefile.in	(revision 5558)
@@ -220,7 +220,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/collision_detection/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/collision_detection/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/collision_detection/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/collision_detection/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/event/Makefile.in
===================================================================
--- branches/world_entities/src/lib/event/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/event/Makefile.in	(revision 5558)
@@ -210,7 +210,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/event/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/event/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/event/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/event/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/event/event_def.h
===================================================================
--- branches/world_entities/src/lib/event/event_def.h	(revision 5527)
+++ branches/world_entities/src/lib/event/event_def.h	(revision 5558)
@@ -31,4 +31,6 @@
   EV_VIDEO_RESIZE,
 
+  EV_MAIN_QUIT,
+
   EV_UNKNOWN,
 
Index: branches/world_entities/src/lib/event/event_handler.cc
===================================================================
--- branches/world_entities/src/lib/event/event_handler.cc	(revision 5527)
+++ branches/world_entities/src/lib/event/event_handler.cc	(revision 5558)
@@ -308,4 +308,7 @@
           ev.resize = event.resize;
           ev.type = EV_VIDEO_RESIZE;
+          break;
+        case SDL_QUIT:
+          ev.type = EV_MAIN_QUIT;
           break;
         default:
Index: branches/world_entities/src/lib/graphics/Makefile.in
===================================================================
--- branches/world_entities/src/lib/graphics/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/graphics/Makefile.in	(revision 5558)
@@ -227,7 +227,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/graphics/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/graphics/importer/Makefile.in
===================================================================
--- branches/world_entities/src/lib/graphics/importer/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/graphics/importer/Makefile.in	(revision 5558)
@@ -214,7 +214,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/graphics/importer/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/graphics/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/graphics/spatial_separation/Makefile.in
===================================================================
--- branches/world_entities/src/lib/graphics/spatial_separation/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/graphics/spatial_separation/Makefile.in	(revision 5558)
@@ -204,7 +204,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/spatial_separation/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/spatial_separation/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/graphics/spatial_separation/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/graphics/spatial_separation/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/gui/Makefile.in
===================================================================
--- branches/world_entities/src/lib/gui/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/gui/Makefile.in	(revision 5558)
@@ -183,7 +183,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/gui/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/gui/gl_gui/Makefile.in
===================================================================
--- branches/world_entities/src/lib/gui/gl_gui/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/gui/gl_gui/Makefile.in	(revision 5558)
@@ -230,7 +230,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/gui/gl_gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/gui/gl_gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/gui/gl_gui/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/gui/gl_gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/gui/gtk_gui/Makefile.in
===================================================================
--- branches/world_entities/src/lib/gui/gtk_gui/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/gui/gtk_gui/Makefile.in	(revision 5558)
@@ -232,7 +232,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/gui/gtk_gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/gui/gtk_gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/gui/gtk_gui/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/gui/gtk_gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/particles/Makefile.in
===================================================================
--- branches/world_entities/src/lib/particles/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/particles/Makefile.in	(revision 5558)
@@ -207,7 +207,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/particles/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/physics/Makefile.in
===================================================================
--- branches/world_entities/src/lib/physics/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/physics/Makefile.in	(revision 5558)
@@ -215,7 +215,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/physics/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/physics/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/physics/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/physics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/shell/Makefile.in
===================================================================
--- branches/world_entities/src/lib/shell/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/shell/Makefile.in	(revision 5558)
@@ -209,7 +209,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/shell/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/shell/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/shell/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/shell/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/shell/shell_command.cc
===================================================================
--- branches/world_entities/src/lib/shell/shell_command.cc	(revision 5527)
+++ branches/world_entities/src/lib/shell/shell_command.cc	(revision 5558)
@@ -259,4 +259,16 @@
 tList<ShellCommandAlias>* ShellCommandClass::aliasList = NULL;
 
+
+
+
+
+
+
+
+
+
+////////////////////////
+// SHELL COMMAND BASE //
+////////////////////////
 /**
  * constructs and registers a new Command
@@ -264,5 +276,4 @@
  * @param className the name of the class to apply this command to
  * @param paramCount the count of parameters this command takes
- * @return self
  */
 ShellCommandBase::ShellCommandBase(const char* commandName, const char* className, unsigned int paramCount, ...)
@@ -282,49 +293,21 @@
   this->paramCount = paramCount;
   this->parameters = new unsigned int[paramCount];
+  this->defaultValue = new MultiType[paramCount];
 
   va_list parameterList;
   va_start(parameterList, paramCount);
 
+  // What Parameters we have got
   for (unsigned int i = 0; i < paramCount; i++)
-  {
     this->parameters[i] = va_arg(parameterList, int);
-
-    switch (this->parameters[i])
-    {
-      case ParameterBool:
-        this->defaultBools[i] = va_arg(parameterList, int);
-        break;
-      case ParameterChar:
-        this->defaultStrings[i] = new char[2];
-        sprintf(this->defaultStrings[0], "%c",  va_arg(parameterList, int));
-        break;
-      case ParameterString:
-        this->defaultStrings[i] = va_arg(parameterList, char*);
-        break;
-      case ParameterInt:
-        this->defaultInts[i] = va_arg(parameterList, int);
-        break;
-      case ParameterUInt:
-        this->defaultInts[i] = va_arg(parameterList, unsigned int);
-        break;
-      case ParameterFloat:
-        this->defaultFloats[i] = va_arg(parameterList, double);
-        break;
-      case ParameterLong:
-        this->defaultInts[i] = va_arg(parameterList, long);
-        break;
-      default:
-        break;
-    }
-  }
 }
 
 /**
  * deconstructs a ShellCommand
- * @return
  */
 ShellCommandBase::~ShellCommandBase()
 {
   delete[] this->parameters;
+  delete[] this->defaultValue;
   if (this->alias != NULL && ShellCommandClass::aliasList != NULL)
   {
@@ -417,5 +400,4 @@
  * @return true on success, false otherwise.
  */
-#include  "stdlibincl.h"
 bool ShellCommandBase::execute(const char* executionString)
 {
@@ -598,27 +580,28 @@
   for (unsigned int i = 0; i < count; i++)
   {
+
+
     switch (this->parameters[i])
     {
       case ParameterBool:
-        this->defaultBools[i] = va_arg(defaultList, int);
+        this->defaultValue[i].setInt(va_arg(defaultList, int));
         break;
       case ParameterChar:
-        this->defaultStrings[i] = new char[2];
-        sprintf(this->defaultStrings[0], "%c",  va_arg(defaultList, int));
+        this->defaultValue[i].setChar((char)va_arg(defaultList, int));
         break;
       case ParameterString:
-        this->defaultStrings[i] = va_arg(defaultList, char*);
+        this->defaultValue[i].setString(va_arg(defaultList, char*));
         break;
       case ParameterInt:
-        this->defaultInts[i] = va_arg(defaultList, int);
+        this->defaultValue[i].setInt(va_arg(defaultList, int));
         break;
       case ParameterUInt:
-        this->defaultInts[i] = va_arg(defaultList, unsigned int);
+        this->defaultValue[i].setInt((int)va_arg(defaultList, unsigned int));
         break;
       case ParameterFloat:
-        this->defaultFloats[i] = va_arg(defaultList, double);
+        this->defaultValue[i].setFloat(va_arg(defaultList, double));
         break;
       case ParameterLong:
-        this->defaultInts[i] = va_arg(defaultList, long);
+        this->defaultValue[i].setInt((int) va_arg(defaultList, long));
         break;
       default:
@@ -626,5 +609,4 @@
     }
   }
-
   return this;
 }
Index: branches/world_entities/src/lib/shell/shell_command.h
===================================================================
--- branches/world_entities/src/lib/shell/shell_command.h	(revision 5527)
+++ branches/world_entities/src/lib/shell/shell_command.h	(revision 5558)
@@ -10,4 +10,5 @@
 
 #include "helper_functions.h"
+#include "multi_type.h"
 #include "substring.h"
 #include "functor_list.h"
@@ -133,9 +134,5 @@
     unsigned int                     paramCount;                           //!< the count of parameters.
     unsigned int*                    parameters;                           //!< Parameters the function of this Command takes.
-    char*                            defaultStrings[FUNCTOR_MAX_ARGUMENTS];//!< A list of default Strings stored.
-    int                              defaultInts[FUNCTOR_MAX_ARGUMENTS];   //!< A list of default Ints stored.
-    float                            defaultFloats[FUNCTOR_MAX_ARGUMENTS]; //!< A list of default Floats stored.
-    bool                             defaultBools[FUNCTOR_MAX_ARGUMENTS];  //!< A list of default Bools stored.
-
+    MultiType*                       defaultValue;                         //!< Default Values.
 
   private:
@@ -153,15 +150,15 @@
 /////////////////////////////////
 //! where to chek for default BOOL values
-#define   l_BOOL_DEFGRAB(i)         this->defaultBools[i]
+#define   l_BOOL_DEFGRAB(i)         this->defaultValue[i].getBool()
 //! where to chek for default INT values
-#define   l_INT_DEFGRAB(i)          this->defaultInts[i]
+#define   l_INT_DEFGRAB(i)          this->defaultValue[i].getInt()
 //! where to chek for default UINT values
-#define   l_UINT_DEFGRAB(i)         (unsigned int)this->defaultInts[i]
+#define   l_UINT_DEFGRAB(i)         (unsigned int)this->defaultValue[i].getInt()
 //! where to chek for default LONG values
-#define   l_LONG_DEFGRAB(i)         (long)this->defaultInts[i]
+#define   l_LONG_DEFGRAB(i)         (long)this->defaultValue[i].getInt()
 //! where to chek for default FLOAT values
-#define   l_FLOAT_DEFGRAB(i)        this->defaultFloats[i]
+#define   l_FLOAT_DEFGRAB(i)        this->defaultValue[i].getFloat()
 //! where to chek for default STRING values
-#define   l_STRING_DEFGRAB(i)       this->defaultStrings[i]
+#define   l_STRING_DEFGRAB(i)       this->defaultValue[i].getString()
 
 //////////////////////////
@@ -183,46 +180,70 @@
 //! registers a command with 1 parameter
 #define ShellCommandRegister1(t1) \
-  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE), t1##_TYPE d1 = t1##_DEFAULT) \
+  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE)) \
   { \
     if (isRegistered(commandName, className, 1, t1##_PARAM)== true) \
       return NULL; \
-    return new SHELLCOMMAND<T>(commandName, className, function, d1); \
+    return new SHELLCOMMAND<T>(commandName, className, function); \
   }
 
 //! registers a command with 2 parameters
 #define ShellCommandRegister2(t1,t2) \
-  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE), t1##_TYPE d1 = t1##_DEFAULT, t2##_TYPE d2 = t2##_DEFAULT) \
+  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE)) \
   { \
     if (isRegistered(commandName, className, 2, t1##_PARAM, t2##_PARAM)== true) \
       return NULL; \
-    return new SHELLCOMMAND<T>(commandName, className, function, d1, d2); \
+    return new SHELLCOMMAND<T>(commandName, className, function); \
   }
 
 //! registers a command with 3 parameters
 #define ShellCommandRegister3(t1,t2,t3) \
-  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE), t1##_TYPE d1 = t1##_DEFAULT, t2##_TYPE d2 = t2##_DEFAULT, t3##_TYPE d3 = t3##_DEFAULT) \
+  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE)) \
   { \
     if (isRegistered(commandName, className, 3, t1##_PARAM, t2##_PARAM, t3##_PARAM)== true) \
       return NULL; \
-    return new SHELLCOMMAND<T>(commandName, className, function, d1, d2, d3); \
+    return new SHELLCOMMAND<T>(commandName, className, function); \
   }
 
 //! registers a command with 4 parameters
 #define ShellCommandRegister4(t1,t2,t3,t4) \
-  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE), t1##_TYPE d1 = t1##_DEFAULT, t2##_TYPE d2 = t2##_DEFAULT, t3##_TYPE d3 = t3##_DEFAULT, t4##_TYPE d4 = t4##_DEFAULT) \
+  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE)) \
   { \
     if (isRegistered(commandName, className, 4, t1##_PARAM, t2##_PARAM, t3##_PARAM, t4##_PARAM)== true) \
       return NULL; \
-    return new SHELLCOMMAND<T>(commandName, className, function, d1, d2, d3, d4); \
+    return new SHELLCOMMAND<T>(commandName, className, function); \
   }
 
 //! registers a command with 5 parameters
 #define ShellCommandRegister5(t1,t2,t3,t4,t5) \
-  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE), t1##_TYPE d1 = t1##_DEFAULT, t2##_TYPE d2 = t2##_DEFAULT, t3##_TYPE d3 = t3##_DEFAULT, t4##_TYPE d4 = t4##_DEFAULT, t5##_TYPE d5 = t5##_DEFAULT) \
+  static SHELLCOMMAND<T>* registerCommand(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE)) \
   { \
     if (isRegistered(commandName, className, 5, t1##_PARAM, t2##_PARAM, t3##_PARAM, t4##_PARAM, t5##_PARAM)== true) \
       return NULL; \
-    return new ShellCommand<T>(commandName, className, function, d1, d2, d3, d4, d5); \
-  }
+    return new ShellCommand<T>(commandName, className, function); \
+  }
+
+///////////////////////
+// FUNCTION POINTERS //
+///////////////////////
+#define ShellCommandFunctionPoiter0() \
+  void SHELLCOMMANDINCLASS(*functionPointer_0)();
+
+#define ShellCommandFunctionPoiter1(t1) \
+  void SHELLCOMMANDINCLASS(*functionPointer_1_##t1)(t1##_TYPE);
+
+#define ShellCommandFunctionPoiter2(t1, t2) \
+  void SHELLCOMMANDINCLASS(*functionPointer_2_##t1##_##t2)(t1##_TYPE, t2##_TYPE);
+
+
+#define ShellCommandFunctionPoiter3(t1, t2, t3) \
+  void SHELLCOMMANDINCLASS(*functionPointer_3_##t1##_##t2##_##t3)(t1##_TYPE, t2##_TYPE, t3##_TYPE);
+
+#define ShellCommandFunctionPoiter4(t1, t2, t3, t4) \
+  void SHELLCOMMANDINCLASS(*functionPointer_4_##t1##_##t2##_##t3##_##t4)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE);
+
+
+#define ShellCommandFunctionPoiter5(t1, t2, t3, t4, t5) \
+  void SHELLCOMMANDINCLASS(*functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE); \
+
 
 //////////////////
@@ -231,60 +252,54 @@
 //! creates a command that takes no parameters
 #define ShellCommandConstructor0() \
-  void SHELLCOMMANDINCLASS(*functionPointer_0)(); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)()) \
   : ShellCommandBase(commandName, className, 0) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_0 = function; \
+    this->fp.functionPointer_0 = function; \
   }
 
 //! creates a command that takes one parameter
 #define ShellCommandConstructor1(t1) \
-  void SHELLCOMMANDINCLASS(*functionPointer_1_##t1)(t1##_TYPE); \
-  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE), t1##_TYPE d1) \
-  : ShellCommandBase(commandName, className, 1, t1##_PARAM, d1) \
-  { \
-    this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_1_##t1 = function; \
+  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE)) \
+  : ShellCommandBase(commandName, className, 1, t1##_PARAM) \
+  { \
+    this->functorType = SHELLCOMMANDTYPE; \
+    this->fp.functionPointer_1_##t1 = function; \
   }
 
 //! creates a command that takes two parameters
 #define ShellCommandConstructor2(t1,t2) \
-  void SHELLCOMMANDINCLASS(*functionPointer_2_##t1##_##t2)(t1##_TYPE, t2##_TYPE); \
-  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE), t1##_TYPE d1, t2##_TYPE d2) \
-  : ShellCommandBase(commandName, className, 2, t1##_PARAM, d1, t2##_PARAM, d2) \
-  { \
-    this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_2_##t1##_##t2 = function; \
+  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE)) \
+  : ShellCommandBase(commandName, className, 2, t1##_PARAM, t2##_PARAM) \
+  { \
+    this->functorType = SHELLCOMMANDTYPE; \
+    this->fp.functionPointer_2_##t1##_##t2 = function; \
   }
 
 //! creates a command that takes three parameter
 #define ShellCommandConstructor3(t1,t2,t3) \
-  void SHELLCOMMANDINCLASS(*functionPointer_3_##t1##_##t2##_##t3)(t1##_TYPE, t2##_TYPE, t3##_TYPE); \
-  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE), t1##_TYPE d1, t2##_TYPE d2, t3##_TYPE d3) \
-  : ShellCommandBase(commandName, className, 3, t1##_PARAM, d1, t2##_PARAM, d2, t3##_PARAM, d3) \
-  { \
-    this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_3_##t1##_##t2##_##t3 = function; \
+  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE)) \
+  : ShellCommandBase(commandName, className, 3, t1##_PARAM, t2##_PARAM, t3##_PARAM) \
+  { \
+    this->functorType = SHELLCOMMANDTYPE; \
+    this->fp.functionPointer_3_##t1##_##t2##_##t3 = function; \
   }
 
 //! creates a command that takes four parameter
 #define ShellCommandConstructor4(t1,t2,t3,t4) \
-  void SHELLCOMMANDINCLASS(*functionPointer_4_##t1##_##t2##_##t3##_##t4)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE); \
-  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE), t1##_TYPE d1, t2##_TYPE d2, t3##_TYPE d3, t4##_TYPE d4) \
-  : ShellCommandBase(commandName, className, 4, t1##_PARAM, d1, t2##_PARAM, d2, t3##_PARAM, d3, t4##_PARAM, d4) \
-  { \
-    this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_4_##t1##_##t2##_##t3##_##t4 = function; \
+  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE)) \
+  : ShellCommandBase(commandName, className, 4, t1##_PARAM, t2##_PARAM, t3##_PARAM, t4##_PARAM) \
+  { \
+    this->functorType = SHELLCOMMANDTYPE; \
+    this->fp.functionPointer_4_##t1##_##t2##_##t3##_##t4 = function; \
   }
 
 //! creates a command that takes five parameter
 #define ShellCommandConstructor5(t1,t2,t3,t4,t5) \
-  void SHELLCOMMANDINCLASS(*functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE); \
-  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE), t1##_TYPE d1, t2##_TYPE d2, t3##_TYPE d3, t4##_TYPE d4, t5##_TYPE d5) \
-  : ShellCommandBase(commandName, className, 5, t1##_PARAM, d1, t2##_PARAM, d2, t3##_PARAM, d3, t4##_PARAM, d4, t5##_PARAM, d5) \
-  { \
-    this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5 = function; \
+  SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE)) \
+  : ShellCommandBase(commandName, className, 5, t1##_PARAM, t2##_PARAM, t3##_PARAM, t4##_PARAM, t5##_PARAM) \
+  { \
+    this->functorType = SHELLCOMMANDTYPE; \
+    this->fp.functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5 = function; \
   }
 
@@ -337,5 +352,5 @@
 #undef SHELLCOMMANDEXECUTER
 #endif
-#define SHELLCOMMANDEXECUTER(nameExt)      (dynamic_cast<T*>(object)->*functionPointer##nameExt)
+#define SHELLCOMMANDEXECUTER(nameExt)      (dynamic_cast<T*>(object)->*(fp.functionPointer##nameExt))
 #ifdef SHELLCOMMANDINCLASS
 #undef SHELLCOMMANDINCLASS
@@ -353,4 +368,11 @@
 
   private:
+//! FUNCTOR_LIST is the List of FunctionPointers
+    union FunctionPointers {
+#define FUNCTOR_LIST(x) ShellCommandFunctionPoiter ## x
+#include "functor_list.h"
+#undef FUNCTOR_LIST
+    } fp;
+
 //! FUNCTOR_LIST is the List of CommandConstructors
 #define FUNCTOR_LIST(x) ShellCommandConstructor ## x
@@ -382,5 +404,5 @@
 #undef SHELLCOMMANDEXECUTER
 #endif
-#define SHELLCOMMANDEXECUTER(nameExt)     functionPointer##nameExt
+#define SHELLCOMMANDEXECUTER(nameExt)     fp.functionPointer##nameExt
 #ifdef SHELLCOMMANDINCLASS
 #undef SHELLCOMMANDINCLASS
@@ -398,4 +420,11 @@
 
   private:
+//! FUNCTOR_LIST is the List of FunctionPointers
+    union FunctionPointers {
+#define FUNCTOR_LIST(x) ShellCommandFunctionPoiter ## x
+#include "functor_list.h"
+#undef FUNCTOR_LIST
+    } fp;
+
 //! FUNCTOR_LIST is the List of CommandConstructors
 #define FUNCTOR_LIST(x) ShellCommandConstructor ## x
Index: branches/world_entities/src/lib/sound/Makefile.in
===================================================================
--- branches/world_entities/src/lib/sound/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/sound/Makefile.in	(revision 5558)
@@ -207,7 +207,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/sound/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/sound/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/sound/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/sound/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/tinyxml/Makefile.in
===================================================================
--- branches/world_entities/src/lib/tinyxml/Makefile.in	(revision 5527)
+++ branches/world_entities/src/lib/tinyxml/Makefile.in	(revision 5558)
@@ -203,7 +203,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/tinyxml/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/tinyxml/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/lib/tinyxml/Makefile
+	  $(AUTOMAKE) --foreign  src/lib/tinyxml/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/lib/util/multi_type.cc
===================================================================
--- branches/world_entities/src/lib/util/multi_type.cc	(revision 5558)
+++ branches/world_entities/src/lib/util/multi_type.cc	(revision 5558)
@@ -0,0 +1,375 @@
+/*
+   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: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "multi_type.h"
+#include "stdincl.h"
+// #include <stddef.h>
+// #include <stdlib.h>
+// #include <string.h>
+// #include <stdio.h>
+
+using namespace std;
+
+/**
+ * creates a multiType without any stored value at all.
+ */
+MultiType::MultiType()
+{
+  this->init();
+}
+/**
+ * creates a multiType out of a boolean
+ * @param value the Value of this MulitType
+ */
+MultiType::MultiType(bool value)
+{
+  this->init();
+  this->setBool(value);
+}
+
+/**
+ * creates a multiType out of an integer
+ * @param value the Value of this MulitType
+ */
+MultiType::MultiType(int value)
+{
+  this->init();
+  this->setInt(value);
+}
+
+/**
+ * creates a multiType out of a float (double)
+ * @param value the Value of this MulitType
+ */
+MultiType::MultiType(double value)
+{
+  this->init();
+  this->setFloat(value);
+}
+
+/**
+ * creates a multiType out of a char
+ * @param value the Value of this MulitType
+ */
+MultiType::MultiType(char value)
+{
+  this->init();
+  this->setChar(value);
+}
+
+/**
+ * creates a multiType out of a String
+ * @param value the Value of this MulitType
+ */
+MultiType::MultiType(const char* value)
+{
+  this->init();
+  this->setString(value);
+}
+
+/**
+ * standard deconstructor
+*/
+MultiType::~MultiType ()
+{
+  if (this->storedString != NULL)
+    delete[] this->storedString;
+}
+
+/**
+ * copy Constructor
+ * @param mt: the entity to copy
+ * @returns a Copy of itself. (strings inside are copied as well)
+ */
+MultiType MultiType::operator= (const MultiType& mt)
+{
+  this->type = mt.type;
+  this->value = mt.value;
+
+  if (mt.type == MT_STRING)
+  {
+    this->storedString = new char[strlen (mt.storedString)+1];
+    strcpy(this->storedString, mt.storedString);
+    this->value.String = this->storedString;
+  }
+}
+
+/**
+ * initializes the MultiType
+ */
+void MultiType::init()
+{
+  this->type = MT_NULL;
+  this->storedString = NULL;
+}
+
+
+
+void MultiType::setType(MT_Type)
+{
+
+}
+
+/**
+ * sets a new Value to the MultiType
+ * @param value the new Value as a bool
+ */
+void MultiType::setBool(bool value)
+{
+  this->type = MT_BOOL;
+  this->value.Bool = value;
+}
+
+/**
+ * sets a new Value to the MultiType
+ * @param value the new Value as an int
+ */
+void MultiType::setInt(int value)
+{
+  this->type = MT_INT;
+  this->value.Int = value;
+}
+
+/**
+ * sets a new Value to the MultiType
+ * @param value the new Value as a float
+ */
+void MultiType::setFloat(float value)
+{
+  this->type = MT_FLOAT;
+  this->value.Float = value;
+
+}
+
+/**
+ * sets a new Value to the MultiType
+ * @param value the new Value as a char
+ */
+void MultiType::setChar(char value)
+{
+  this->type = MT_CHAR;
+  this->value.Char = value;
+}
+
+/**
+ * sets a new Value to the MultiType
+ * @param value the new Value as a String
+ */
+void MultiType::setString(const char* value)
+{
+  this->type = MT_STRING;
+
+  if (this->storedString != NULL)
+    delete[] this->storedString;
+
+  if (value == NULL)
+  {
+    this->storedString = new char[1];
+    this->storedString[0] = '\0';
+    this->value.String = this->storedString;
+    return;
+  }
+  else
+  {
+    this->storedString = new char[strlen(value)+1];
+    strcpy(storedString, value);
+    this->value.String = this->storedString;
+  }
+}
+
+
+
+
+
+/**
+ * @returns the Value of this MultiType as a int
+ */
+bool MultiType::getBool() const
+{
+  // default case:
+  if (this->type & MT_BOOL)
+    return this->value.Bool;
+  // Special Cases:
+  else if (this->type & MT_INT) return (this->value.Int == 0)? false : true;
+  else if (this->type & MT_FLOAT) return (this->value.Float == 0.0f)? false : true;
+  else if (this->type & MT_CHAR) return (this->value.Char == '\0')? false : true;
+  else if (this->type & MT_STRING) return (!strncmp(this->value.String, "true", 4) || !strncmp(this->value.String, "TRUE", 4) || !strncmp(this->value.String, "1", 1))? true : false; //! @TODO make this better.
+
+  return false;
+}
+
+/**
+ * @returns the Value of this MultiType as a int
+ */
+int MultiType::getInt() const
+{
+  // default case:
+  if (this->type & MT_INT)
+    return this->value.Int;
+  if (this->type & MT_BOOL) return (this->value.Bool)? 1 : 0;
+  else if (this->type & MT_FLOAT) return (int) this->value.Float;
+  else if (this->type & MT_CHAR) return (int) this->value.Char;
+  else if (this->type & MT_STRING) {
+    char* endPtr = NULL;
+    int result = strtol(this->value.String, &endPtr, 10);
+    if ( endPtr >= this->value.String && endPtr < this->value.String + strlen(this->value.String))
+      return 0;
+    else
+      return result;
+  }
+
+  return 0;
+}
+
+/**
+ * @returns the Value of this MultiType as a float
+ */
+float MultiType::getFloat() const
+{
+ // default case:
+  if (this->type & MT_FLOAT)
+    return this->value.Float;
+  if (this->type & MT_BOOL) return (this->value.Bool == true)? 1.0f : 0.0f;
+  else if (this->type & MT_INT) return (float) this->value.Int;
+  else if (this->type & MT_CHAR) return (float) this->value.Char;
+  else if (this->type & MT_STRING) {
+    char* endPtr = NULL;
+    double result = strtod(this->value.String, &endPtr);
+    if ( endPtr >= this->value.String && endPtr < this->value.String + strlen(this->value.String))
+      return 0.0f;
+    else
+      return result;
+  }
+
+  return 0.0f;
+}
+
+
+/**
+ * @returns the Value of this MultiType as a char
+ */
+char MultiType::getChar() const
+{
+ // default case:
+  if (this->type & MT_INT)
+    return this->value.Int;
+  if (this->type & MT_BOOL) return (this->value.Bool)? 'y' : 'n';
+  else if (this->type & MT_INT) return (int) this->value.Int;
+  else if (this->type & MT_FLOAT) return (char) this->value.Float;
+  else if (this->type & MT_STRING) return *this->value.String;
+
+  return '\0';
+}
+
+/**
+ * @returns the Value of this MultiType as a String
+ */
+const char* MultiType::getString()
+{
+ // default case:
+  if (this->type & MT_STRING)
+    return this->value.String;
+  else
+  {
+    if (this->type & MT_BOOL) return (this->value.Bool)? "true" : "false";
+    else if (this->type & MT_CHAR) &this->value.Char;
+
+    char tmpString[128];
+    if (this->storedString != NULL)
+    {
+      delete[] this->storedString;
+      this->storedString = NULL;
+    }
+
+    if (this->type & MT_INT)
+    {
+      sprintf(tmpString, "%d", this->value.Int);
+      this->storedString = new char[strlen (tmpString)+1];
+      strcpy (this->storedString, tmpString);
+      return this->storedString;
+    }
+    if (this->type & MT_FLOAT)
+    {
+      sprintf(tmpString, "%f", this->value.Float);
+      this->storedString = new char[strlen (tmpString)+1];
+      strcpy (this->storedString, tmpString);
+      return this->storedString;
+    }
+  }
+
+  return "";
+}
+
+/**
+ * prints out some nice debug output
+ */
+void MultiType::debug()
+{
+  printf("MultiType of Type: %s is: BOOL: %d, INT: %d, FLOAT: %f, CHAR: %c, STRING %s\n",
+         MultiType::MultiTypeToString(this->type),
+         this->getBool(),
+         this->getInt(),
+         this->getFloat(),
+         this->getChar(),
+         this->getString()
+  );
+
+
+}
+
+/**
+ * converts a MT_Type into a String
+ * @param type: the MT_Type
+ * @returns: the Type as a constant String (do not delete)
+ */
+const char* MultiType::MultiTypeToString(MT_Type type)
+{
+  switch (type)
+  {
+   default:
+    return "NONE";
+   case MT_BOOL:
+    return "bool";
+   case MT_INT:
+    return "int";
+   case MT_FLOAT:
+    return "float";
+   case MT_CHAR:
+    return "char";
+   case MT_STRING:
+    return "string";
+  }
+}
+
+/**
+ * converts a String into a MT_Type
+ * @param type: the Type as a String
+ * @returns: the Type as MT_Type
+ */
+MT_Type MultiType::StringToMultiType(const char* type)
+{
+  if (!strncmp(type, "bool", 4))
+    return MT_BOOL;
+  if (!strncmp(type, "int", 3))
+    return MT_INT;
+  if (!strncmp(type, "float", 5))
+    return MT_FLOAT;
+  if (!strncmp(type, "char", 4))
+    return MT_CHAR;
+  if (!strncmp(type, "string", 6))
+    return MT_STRING;
+}
Index: branches/world_entities/src/lib/util/multi_type.h
===================================================================
--- branches/world_entities/src/lib/util/multi_type.h	(revision 5558)
+++ branches/world_entities/src/lib/util/multi_type.h	(revision 5558)
@@ -0,0 +1,92 @@
+/*!
+ * @file multi_type.h
+ * @brief Definition of ...
+ */
+
+#ifndef _MULTI_TYPE_H
+#define _MULTI_TYPE_H
+
+// FORWARD DECLARATION
+
+//! An enumerator defining Types, that can be stored inside a MultiType.
+typedef enum
+{
+  MT_NULL            = 0,                  //!< No Value at all.
+  MT_BOOL            = 1,                  //!< A bool Value.
+  MT_INT             = 2,                  //!< An int Value.
+  MT_FLOAT           = 4,                  //!< A float Value.
+  MT_CHAR            = 8,                  //!< A single char.
+  MT_STRING          = 16,                 //!< An entire String.
+
+} MT_Type;
+
+
+
+//! A class that encapsulates multiple differen types.
+/**
+ * Only one Value can be Stored inside this Class, but it can have any type: @see MT_Type.
+ */
+class MultiType {
+
+  public:
+    MultiType();
+    MultiType(bool value);
+    MultiType(int value);
+    MultiType(double value);
+    MultiType(char value);
+    MultiType(const char* value);
+    virtual ~MultiType();
+
+    MultiType operator= (const MultiType& mt);
+
+    void setType(MT_Type);
+
+    void setBool(bool value);
+    void setInt(int value);
+    void setFloat(float value);
+    void setChar(char value);
+    void setString(const char* value);
+
+    inline void setValue(bool value) { this->setBool(value); };
+    inline void setValue(int value) { this->setInt(value); };
+    inline void setValue(float value) { this->setFloat(value); };
+    inline void setValue(char value) { this->setChar(value); };
+    inline void setValue(const char* value) { this->setString(value); };
+
+    /** @returns the Type of the Value stored in this MultiType */
+    inline MT_Type getType() const { return this->type; };
+
+
+    /* RETRIEVING FUNCTIONS */
+    bool getBool() const;
+    int getInt() const;
+    float getFloat() const;
+    char getChar() const;
+    const char* getString();
+
+
+    void debug();
+
+    static const char* MultiTypeToString(MT_Type type);
+    static MT_Type StringToMultiType(const char* type);
+
+  private:
+    void init();
+
+
+  private:
+    MT_Type             type;
+    union MultiTypeValue
+    {
+      bool              Bool;
+      int               Int;
+      float             Float;
+      char              Char;
+      char*             String;
+
+    }                   value;
+
+    char*               storedString;
+};
+
+#endif /* _MULTI_TYPE_H */
Index: branches/world_entities/src/orxonox.cc
===================================================================
--- branches/world_entities/src/orxonox.cc	(revision 5527)
+++ branches/world_entities/src/orxonox.cc	(revision 5558)
@@ -52,5 +52,5 @@
 #include "shell_buffer.h"
 
-#include "load_param.h"
+#include "load_param_description.h"
 
 #include <string.h>
Index: branches/world_entities/src/story_entities/world.cc
===================================================================
--- branches/world_entities/src/story_entities/world.cc	(revision 5527)
+++ branches/world_entities/src/story_entities/world.cc	(revision 5558)
@@ -61,5 +61,5 @@
 #include "factory.h"
 
-#include "projectile.h"
+#include "weapons/projectile.h"
 #include "event_handler.h"
 
Index: branches/world_entities/src/subprojects/Makefile.in
===================================================================
--- branches/world_entities/src/subprojects/Makefile.in	(revision 5527)
+++ branches/world_entities/src/subprojects/Makefile.in	(revision 5558)
@@ -190,7 +190,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/subprojects/collision_detection/Makefile.am
===================================================================
--- branches/world_entities/src/subprojects/collision_detection/Makefile.am	(revision 5527)
+++ branches/world_entities/src/subprojects/collision_detection/Makefile.am	(revision 5558)
@@ -5,5 +5,6 @@
 bin_PROGRAMS = collision
 
-collision_LDADD = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+collision_LDADD = $(MAINSRCDIR)/util/libORXutils.a \
+                  $(MAINSRCDIR)/lib/physics/libORXphysics.a \
                   $(MAINSRCDIR)/lib/collision_detection/libORXcd.a \
                   $(MAINSRCDIR)/lib/graphics/importer/libORXimporter.a \
@@ -24,12 +25,4 @@
                    collision_detection.cc \
                    \
-                   $(MAINSRCDIR)/util/loading/factory.cc \
-                   $(MAINSRCDIR)/util/loading/resource_manager.cc \
-                   $(MAINSRCDIR)/util/loading/load_param.cc \
-                   $(MAINSRCDIR)/util/animation/animation.cc \
-                   $(MAINSRCDIR)/util/animation/animation_player.cc \
-                   $(MAINSRCDIR)/util/animation/animation3d.cc \
-                   $(MAINSRCDIR)/util/state.cc \
-		   \
                    $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/lib/util/substring.cc \
@@ -47,3 +40,3 @@
                    collision_test_entity.cc
 
-noinst_HEADERS  =  collision_test_entity.h 
+noinst_HEADERS  =  collision_test_entity.h
Index: branches/world_entities/src/subprojects/collision_detection/Makefile.in
===================================================================
--- branches/world_entities/src/subprojects/collision_detection/Makefile.in	(revision 5527)
+++ branches/world_entities/src/subprojects/collision_detection/Makefile.in	(revision 5558)
@@ -55,9 +55,4 @@
 am_collision_OBJECTS = collision-framework.$(OBJEXT) \
 	collision-collision_detection.$(OBJEXT) \
-	collision-factory.$(OBJEXT) \
-	collision-resource_manager.$(OBJEXT) \
-	collision-load_param.$(OBJEXT) collision-animation.$(OBJEXT) \
-	collision-animation_player.$(OBJEXT) \
-	collision-animation3d.$(OBJEXT) collision-state.$(OBJEXT) \
 	collision-helper_functions.$(OBJEXT) \
 	collision-substring.$(OBJEXT) collision-ini_parser.$(OBJEXT) \
@@ -70,5 +65,6 @@
 collision_OBJECTS = $(am_collision_OBJECTS)
 am__DEPENDENCIES_1 =
-collision_DEPENDENCIES = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+collision_DEPENDENCIES = $(MAINSRCDIR)/util/libORXutils.a \
+	$(MAINSRCDIR)/lib/physics/libORXphysics.a \
 	$(MAINSRCDIR)/lib/collision_detection/libORXcd.a \
 	$(MAINSRCDIR)/lib/graphics/importer/libORXimporter.a \
@@ -205,5 +201,6 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = ../..
-collision_LDADD = $(MAINSRCDIR)/lib/physics/libORXphysics.a \
+collision_LDADD = $(MAINSRCDIR)/util/libORXutils.a \
+                  $(MAINSRCDIR)/lib/physics/libORXphysics.a \
                   $(MAINSRCDIR)/lib/collision_detection/libORXcd.a \
                   $(MAINSRCDIR)/lib/graphics/importer/libORXimporter.a \
@@ -222,12 +219,4 @@
                    collision_detection.cc \
                    \
-                   $(MAINSRCDIR)/util/loading/factory.cc \
-                   $(MAINSRCDIR)/util/loading/resource_manager.cc \
-                   $(MAINSRCDIR)/util/loading/load_param.cc \
-                   $(MAINSRCDIR)/util/animation/animation.cc \
-                   $(MAINSRCDIR)/util/animation/animation_player.cc \
-                   $(MAINSRCDIR)/util/animation/animation3d.cc \
-                   $(MAINSRCDIR)/util/state.cc \
-		   \
                    $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/lib/util/substring.cc \
@@ -245,5 +234,5 @@
                    collision_test_entity.cc
 
-noinst_HEADERS = collision_test_entity.h 
+noinst_HEADERS = collision_test_entity.h
 all: all-am
 
@@ -259,7 +248,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/collision_detection/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/collision_detection/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/collision_detection/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/collision_detection/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -312,7 +301,4 @@
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-animation.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-animation3d.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-animation_player.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-base_object.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-camera.Po@am__quote@
@@ -321,14 +307,10 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-collision_test_entity.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-color.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-factory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-framework.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-gui_gtk.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-helper_functions.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-ini_parser.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-load_param.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-p_node.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-resource_manager.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-state.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-substring.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-vector.Po@am__quote@
@@ -376,102 +358,4 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-collision_detection.obj `if test -f 'collision_detection.cc'; then $(CYGPATH_W) 'collision_detection.cc'; else $(CYGPATH_W) '$(srcdir)/collision_detection.cc'; fi`
-
-collision-factory.o: $(MAINSRCDIR)/util/loading/factory.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-factory.o -MD -MP -MF "$(DEPDIR)/collision-factory.Tpo" -c -o collision-factory.o `test -f '$(MAINSRCDIR)/util/loading/factory.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/factory.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-factory.Tpo" "$(DEPDIR)/collision-factory.Po"; else rm -f "$(DEPDIR)/collision-factory.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/factory.cc' object='collision-factory.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-factory.o `test -f '$(MAINSRCDIR)/util/loading/factory.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/factory.cc
-
-collision-factory.obj: $(MAINSRCDIR)/util/loading/factory.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-factory.obj -MD -MP -MF "$(DEPDIR)/collision-factory.Tpo" -c -o collision-factory.obj `if test -f '$(MAINSRCDIR)/util/loading/factory.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/factory.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-factory.Tpo" "$(DEPDIR)/collision-factory.Po"; else rm -f "$(DEPDIR)/collision-factory.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/factory.cc' object='collision-factory.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-factory.obj `if test -f '$(MAINSRCDIR)/util/loading/factory.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/factory.cc'; fi`
-
-collision-resource_manager.o: $(MAINSRCDIR)/util/loading/resource_manager.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-resource_manager.o -MD -MP -MF "$(DEPDIR)/collision-resource_manager.Tpo" -c -o collision-resource_manager.o `test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/resource_manager.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-resource_manager.Tpo" "$(DEPDIR)/collision-resource_manager.Po"; else rm -f "$(DEPDIR)/collision-resource_manager.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/resource_manager.cc' object='collision-resource_manager.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-resource_manager.o `test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/resource_manager.cc
-
-collision-resource_manager.obj: $(MAINSRCDIR)/util/loading/resource_manager.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-resource_manager.obj -MD -MP -MF "$(DEPDIR)/collision-resource_manager.Tpo" -c -o collision-resource_manager.obj `if test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/resource_manager.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-resource_manager.Tpo" "$(DEPDIR)/collision-resource_manager.Po"; else rm -f "$(DEPDIR)/collision-resource_manager.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/resource_manager.cc' object='collision-resource_manager.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-resource_manager.obj `if test -f '$(MAINSRCDIR)/util/loading/resource_manager.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/resource_manager.cc'; fi`
-
-collision-load_param.o: $(MAINSRCDIR)/util/loading/load_param.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-load_param.o -MD -MP -MF "$(DEPDIR)/collision-load_param.Tpo" -c -o collision-load_param.o `test -f '$(MAINSRCDIR)/util/loading/load_param.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-load_param.Tpo" "$(DEPDIR)/collision-load_param.Po"; else rm -f "$(DEPDIR)/collision-load_param.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param.cc' object='collision-load_param.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-load_param.o `test -f '$(MAINSRCDIR)/util/loading/load_param.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param.cc
-
-collision-load_param.obj: $(MAINSRCDIR)/util/loading/load_param.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-load_param.obj -MD -MP -MF "$(DEPDIR)/collision-load_param.Tpo" -c -o collision-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-load_param.Tpo" "$(DEPDIR)/collision-load_param.Po"; else rm -f "$(DEPDIR)/collision-load_param.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param.cc' object='collision-load_param.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`
-
-collision-animation.o: $(MAINSRCDIR)/util/animation/animation.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation.o -MD -MP -MF "$(DEPDIR)/collision-animation.Tpo" -c -o collision-animation.o `test -f '$(MAINSRCDIR)/util/animation/animation.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation.Tpo" "$(DEPDIR)/collision-animation.Po"; else rm -f "$(DEPDIR)/collision-animation.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation.cc' object='collision-animation.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation.o `test -f '$(MAINSRCDIR)/util/animation/animation.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation.cc
-
-collision-animation.obj: $(MAINSRCDIR)/util/animation/animation.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation.obj -MD -MP -MF "$(DEPDIR)/collision-animation.Tpo" -c -o collision-animation.obj `if test -f '$(MAINSRCDIR)/util/animation/animation.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation.Tpo" "$(DEPDIR)/collision-animation.Po"; else rm -f "$(DEPDIR)/collision-animation.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation.cc' object='collision-animation.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation.obj `if test -f '$(MAINSRCDIR)/util/animation/animation.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation.cc'; fi`
-
-collision-animation_player.o: $(MAINSRCDIR)/util/animation/animation_player.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation_player.o -MD -MP -MF "$(DEPDIR)/collision-animation_player.Tpo" -c -o collision-animation_player.o `test -f '$(MAINSRCDIR)/util/animation/animation_player.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation_player.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation_player.Tpo" "$(DEPDIR)/collision-animation_player.Po"; else rm -f "$(DEPDIR)/collision-animation_player.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation_player.cc' object='collision-animation_player.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation_player.o `test -f '$(MAINSRCDIR)/util/animation/animation_player.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation_player.cc
-
-collision-animation_player.obj: $(MAINSRCDIR)/util/animation/animation_player.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation_player.obj -MD -MP -MF "$(DEPDIR)/collision-animation_player.Tpo" -c -o collision-animation_player.obj `if test -f '$(MAINSRCDIR)/util/animation/animation_player.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation_player.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation_player.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation_player.Tpo" "$(DEPDIR)/collision-animation_player.Po"; else rm -f "$(DEPDIR)/collision-animation_player.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation_player.cc' object='collision-animation_player.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation_player.obj `if test -f '$(MAINSRCDIR)/util/animation/animation_player.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation_player.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation_player.cc'; fi`
-
-collision-animation3d.o: $(MAINSRCDIR)/util/animation/animation3d.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation3d.o -MD -MP -MF "$(DEPDIR)/collision-animation3d.Tpo" -c -o collision-animation3d.o `test -f '$(MAINSRCDIR)/util/animation/animation3d.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation3d.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation3d.Tpo" "$(DEPDIR)/collision-animation3d.Po"; else rm -f "$(DEPDIR)/collision-animation3d.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation3d.cc' object='collision-animation3d.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation3d.o `test -f '$(MAINSRCDIR)/util/animation/animation3d.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/animation/animation3d.cc
-
-collision-animation3d.obj: $(MAINSRCDIR)/util/animation/animation3d.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-animation3d.obj -MD -MP -MF "$(DEPDIR)/collision-animation3d.Tpo" -c -o collision-animation3d.obj `if test -f '$(MAINSRCDIR)/util/animation/animation3d.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation3d.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation3d.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-animation3d.Tpo" "$(DEPDIR)/collision-animation3d.Po"; else rm -f "$(DEPDIR)/collision-animation3d.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/animation/animation3d.cc' object='collision-animation3d.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-animation3d.obj `if test -f '$(MAINSRCDIR)/util/animation/animation3d.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/animation/animation3d.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/animation/animation3d.cc'; fi`
-
-collision-state.o: $(MAINSRCDIR)/util/state.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-state.o -MD -MP -MF "$(DEPDIR)/collision-state.Tpo" -c -o collision-state.o `test -f '$(MAINSRCDIR)/util/state.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/state.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-state.Tpo" "$(DEPDIR)/collision-state.Po"; else rm -f "$(DEPDIR)/collision-state.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/state.cc' object='collision-state.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-state.o `test -f '$(MAINSRCDIR)/util/state.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/state.cc
-
-collision-state.obj: $(MAINSRCDIR)/util/state.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-state.obj -MD -MP -MF "$(DEPDIR)/collision-state.Tpo" -c -o collision-state.obj `if test -f '$(MAINSRCDIR)/util/state.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/state.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/state.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/collision-state.Tpo" "$(DEPDIR)/collision-state.Po"; else rm -f "$(DEPDIR)/collision-state.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/state.cc' object='collision-state.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-state.obj `if test -f '$(MAINSRCDIR)/util/state.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/state.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/state.cc'; fi`
 
 collision-helper_functions.o: $(MAINSRCDIR)/lib/util/helper_functions.cc
Index: branches/world_entities/src/subprojects/importer/Makefile.am
===================================================================
--- branches/world_entities/src/subprojects/importer/Makefile.am	(revision 5527)
+++ branches/world_entities/src/subprojects/importer/Makefile.am	(revision 5558)
@@ -27,4 +27,5 @@
                   $(MAINSRCDIR)/lib/coord/null_parent.cc \
                   $(MAINSRCDIR)/util/loading/load_param.cc \
+                  $(MAINSRCDIR)/util/loading/load_param_description.cc \
                   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                   $(MAINSRCDIR)/lib/util/substring.cc \
Index: branches/world_entities/src/subprojects/importer/Makefile.in
===================================================================
--- branches/world_entities/src/subprojects/importer/Makefile.in	(revision 5527)
+++ branches/world_entities/src/subprojects/importer/Makefile.in	(revision 5558)
@@ -58,4 +58,5 @@
 	importer-ini_parser.$(OBJEXT) importer-p_node.$(OBJEXT) \
 	importer-null_parent.$(OBJEXT) importer-load_param.$(OBJEXT) \
+	importer-load_param_description.$(OBJEXT) \
 	importer-helper_functions.$(OBJEXT) \
 	importer-substring.$(OBJEXT) importer-color.$(OBJEXT) \
@@ -213,4 +214,5 @@
                   $(MAINSRCDIR)/lib/coord/null_parent.cc \
                   $(MAINSRCDIR)/util/loading/load_param.cc \
+                  $(MAINSRCDIR)/util/loading/load_param_description.cc \
                   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                   $(MAINSRCDIR)/lib/util/substring.cc \
@@ -231,7 +233,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -294,4 +296,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-ini_parser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-load_param.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-load_param_description.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importer-p_node.Po@am__quote@
@@ -482,4 +485,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`
+
+importer-load_param_description.o: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT importer-load_param_description.o -MD -MP -MF "$(DEPDIR)/importer-load_param_description.Tpo" -c -o importer-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/importer-load_param_description.Tpo" "$(DEPDIR)/importer-load_param_description.Po"; else rm -f "$(DEPDIR)/importer-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='importer-load_param_description.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc
+
+importer-load_param_description.obj: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT importer-load_param_description.obj -MD -MP -MF "$(DEPDIR)/importer-load_param_description.Tpo" -c -o importer-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/importer-load_param_description.Tpo" "$(DEPDIR)/importer-load_param_description.Po"; else rm -f "$(DEPDIR)/importer-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='importer-load_param_description.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(importer_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o importer-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`
 
 importer-helper_functions.o: $(MAINSRCDIR)/lib/util/helper_functions.cc
Index: branches/world_entities/src/subprojects/particles/Makefile.am
===================================================================
--- branches/world_entities/src/subprojects/particles/Makefile.am	(revision 5527)
+++ branches/world_entities/src/subprojects/particles/Makefile.am	(revision 5558)
@@ -36,4 +36,5 @@
                    $(MAINSRCDIR)/lib/util/substring.cc \
                    $(MAINSRCDIR)/util/loading/load_param.cc \
+                   $(MAINSRCDIR)/util/loading/load_param_description.cc \
 		   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/util/loading/factory.cc \
Index: branches/world_entities/src/subprojects/particles/Makefile.in
===================================================================
--- branches/world_entities/src/subprojects/particles/Makefile.in	(revision 5527)
+++ branches/world_entities/src/subprojects/particles/Makefile.in	(revision 5558)
@@ -62,4 +62,5 @@
 	particles-gui_gtk.$(OBJEXT) particles-substring.$(OBJEXT) \
 	particles-load_param.$(OBJEXT) \
+	particles-load_param_description.$(OBJEXT) \
 	particles-helper_functions.$(OBJEXT) \
 	particles-factory.$(OBJEXT) particles-color.$(OBJEXT) \
@@ -233,4 +234,5 @@
                    $(MAINSRCDIR)/lib/util/substring.cc \
                    $(MAINSRCDIR)/util/loading/load_param.cc \
+                   $(MAINSRCDIR)/util/loading/load_param_description.cc \
 		   $(MAINSRCDIR)/lib/util/helper_functions.cc \
                    $(MAINSRCDIR)/util/loading/factory.cc \
@@ -251,7 +253,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -316,4 +318,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-light.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-load_param.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-load_param_description.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particles-p_node.Po@am__quote@
@@ -562,4 +565,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o particles-load_param.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param.cc'; fi`
+
+particles-load_param_description.o: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT particles-load_param_description.o -MD -MP -MF "$(DEPDIR)/particles-load_param_description.Tpo" -c -o particles-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/particles-load_param_description.Tpo" "$(DEPDIR)/particles-load_param_description.Po"; else rm -f "$(DEPDIR)/particles-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='particles-load_param_description.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o particles-load_param_description.o `test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/loading/load_param_description.cc
+
+particles-load_param_description.obj: $(MAINSRCDIR)/util/loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT particles-load_param_description.obj -MD -MP -MF "$(DEPDIR)/particles-load_param_description.Tpo" -c -o particles-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/particles-load_param_description.Tpo" "$(DEPDIR)/particles-load_param_description.Po"; else rm -f "$(DEPDIR)/particles-load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/loading/load_param_description.cc' object='particles-load_param_description.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(particles_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o particles-load_param_description.obj `if test -f '$(MAINSRCDIR)/util/loading/load_param_description.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/loading/load_param_description.cc'; fi`
 
 particles-helper_functions.o: $(MAINSRCDIR)/lib/util/helper_functions.cc
Index: branches/world_entities/src/subprojects/testmain/Makefile.in
===================================================================
--- branches/world_entities/src/subprojects/testmain/Makefile.in	(revision 5527)
+++ branches/world_entities/src/subprojects/testmain/Makefile.in	(revision 5558)
@@ -197,7 +197,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile
+	  $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: branches/world_entities/src/util/Makefile.am
===================================================================
--- branches/world_entities/src/util/Makefile.am	(revision 5527)
+++ branches/world_entities/src/util/Makefile.am	(revision 5558)
@@ -5,4 +5,5 @@
 
 libORXutils_a_SOURCES = fast_factory.cc \
+                        loading/factory.cc \
 			garbage_collector.cc \
 			state.cc \
@@ -12,7 +13,7 @@
 			animation/animation_player.cc \
 			loading/resource_manager.cc \
-			loading/factory.cc \
 			loading/game_loader.cc \
 			loading/load_param.cc \
+			loading/load_param_description.cc \
 			track/pilot_node.cc \
 			track/track_manager.cc \
@@ -31,4 +32,5 @@
 			loading/game_loader.h \
 			loading/load_param.h \
+			loading/load_param_description.h \
 			track/pilot_node.h \
 			track/track_manager.h \
Index: branches/world_entities/src/util/Makefile.in
===================================================================
--- branches/world_entities/src/util/Makefile.in	(revision 5527)
+++ branches/world_entities/src/util/Makefile.in	(revision 5558)
@@ -54,10 +54,10 @@
 libORXutils_a_AR = $(AR) $(ARFLAGS)
 libORXutils_a_LIBADD =
-am_libORXutils_a_OBJECTS = fast_factory.$(OBJEXT) \
+am_libORXutils_a_OBJECTS = fast_factory.$(OBJEXT) factory.$(OBJEXT) \
 	garbage_collector.$(OBJEXT) state.$(OBJEXT) \
 	user_control.$(OBJEXT) animation3d.$(OBJEXT) \
 	animation.$(OBJEXT) animation_player.$(OBJEXT) \
-	resource_manager.$(OBJEXT) factory.$(OBJEXT) \
-	game_loader.$(OBJEXT) load_param.$(OBJEXT) \
+	resource_manager.$(OBJEXT) game_loader.$(OBJEXT) \
+	load_param.$(OBJEXT) load_param_description.$(OBJEXT) \
 	pilot_node.$(OBJEXT) track_manager.$(OBJEXT) \
 	track_node.$(OBJEXT)
@@ -190,4 +190,5 @@
 noinst_LIBRARIES = libORXutils.a
 libORXutils_a_SOURCES = fast_factory.cc \
+                        loading/factory.cc \
 			garbage_collector.cc \
 			state.cc \
@@ -197,7 +198,7 @@
 			animation/animation_player.cc \
 			loading/resource_manager.cc \
-			loading/factory.cc \
 			loading/game_loader.cc \
 			loading/load_param.cc \
+			loading/load_param_description.cc \
 			track/pilot_node.cc \
 			track/track_manager.cc \
@@ -216,4 +217,5 @@
 			loading/game_loader.h \
 			loading/load_param.h \
+			loading/load_param_description.h \
 			track/pilot_node.h \
 			track/track_manager.h \
@@ -233,7 +235,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/util/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/util/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/util/Makefile
+	  $(AUTOMAKE) --foreign  src/util/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -275,4 +277,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/garbage_collector.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_param.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_param_description.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pilot_node.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resource_manager.Po@am__quote@
@@ -296,4 +299,18 @@
 @am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+factory.o: 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 'loading/factory.cc' || echo '$(srcdir)/'`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='loading/factory.cc' object='factory.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.o `test -f 'loading/factory.cc' || echo '$(srcdir)/'`loading/factory.cc
+
+factory.obj: 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 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/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='loading/factory.cc' object='factory.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.obj `if test -f 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/loading/factory.cc'; fi`
+
 animation3d.o: animation/animation3d.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT animation3d.o -MD -MP -MF "$(DEPDIR)/animation3d.Tpo" -c -o animation3d.o `test -f 'animation/animation3d.cc' || echo '$(srcdir)/'`animation/animation3d.cc; \
@@ -352,18 +369,4 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o resource_manager.obj `if test -f 'loading/resource_manager.cc'; then $(CYGPATH_W) 'loading/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/loading/resource_manager.cc'; fi`
 
-factory.o: 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 'loading/factory.cc' || echo '$(srcdir)/'`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='loading/factory.cc' object='factory.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.o `test -f 'loading/factory.cc' || echo '$(srcdir)/'`loading/factory.cc
-
-factory.obj: 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 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/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='loading/factory.cc' object='factory.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o factory.obj `if test -f 'loading/factory.cc'; then $(CYGPATH_W) 'loading/factory.cc'; else $(CYGPATH_W) '$(srcdir)/loading/factory.cc'; fi`
-
 game_loader.o: loading/game_loader.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT game_loader.o -MD -MP -MF "$(DEPDIR)/game_loader.Tpo" -c -o game_loader.o `test -f 'loading/game_loader.cc' || echo '$(srcdir)/'`loading/game_loader.cc; \
@@ -393,4 +396,18 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o load_param.obj `if test -f 'loading/load_param.cc'; then $(CYGPATH_W) 'loading/load_param.cc'; else $(CYGPATH_W) '$(srcdir)/loading/load_param.cc'; fi`
+
+load_param_description.o: loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT load_param_description.o -MD -MP -MF "$(DEPDIR)/load_param_description.Tpo" -c -o load_param_description.o `test -f 'loading/load_param_description.cc' || echo '$(srcdir)/'`loading/load_param_description.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/load_param_description.Tpo" "$(DEPDIR)/load_param_description.Po"; else rm -f "$(DEPDIR)/load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/load_param_description.cc' object='load_param_description.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o load_param_description.o `test -f 'loading/load_param_description.cc' || echo '$(srcdir)/'`loading/load_param_description.cc
+
+load_param_description.obj: loading/load_param_description.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT load_param_description.obj -MD -MP -MF "$(DEPDIR)/load_param_description.Tpo" -c -o load_param_description.obj `if test -f 'loading/load_param_description.cc'; then $(CYGPATH_W) 'loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/loading/load_param_description.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/load_param_description.Tpo" "$(DEPDIR)/load_param_description.Po"; else rm -f "$(DEPDIR)/load_param_description.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='loading/load_param_description.cc' object='load_param_description.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o load_param_description.obj `if test -f 'loading/load_param_description.cc'; then $(CYGPATH_W) 'loading/load_param_description.cc'; else $(CYGPATH_W) '$(srcdir)/loading/load_param_description.cc'; fi`
 
 pilot_node.o: track/pilot_node.cc
Index: branches/world_entities/src/util/loading/game_loader.cc
===================================================================
--- branches/world_entities/src/util/loading/game_loader.cc	(revision 5527)
+++ branches/world_entities/src/util/loading/game_loader.cc	(revision 5558)
@@ -89,4 +89,5 @@
   this->eventHandler = EventHandler::getInstance();
   this->eventHandler->subscribe(this, ES_GAME, KeyMapper::PEV_PAUSE);
+  this->eventHandler->subscribe(this, ES_ALL, EV_MAIN_QUIT);          //< External Quit Event
   this->eventHandler->subscribe(this, ES_ALL, KeyMapper::PEV_QUIT);
   this->eventHandler->subscribe(this, ES_GAME, KeyMapper::PEV_NEXT_WORLD);
@@ -274,35 +275,37 @@
  *  handle keyboard commands
  * @param event the event to handle
-*/
+ */
 void GameLoader::process(const Event& event)
 {
   if( event.type == KeyMapper::PEV_NEXT_WORLD)
-    {
-      if( likely(event.bPressed))
-        {
-          this->nextLevel();
-        }
-    }
+  {
+    if( likely(event.bPressed))
+    {
+      this->nextLevel();
+    }
+  }
   else if( event.type == KeyMapper::PEV_PREVIOUS_WORLD)
-    {
-      if( likely(event.bPressed))
-        {
-          this->previousLevel();
-        }
-    }
+  {
+    if( likely(event.bPressed))
+    {
+      this->previousLevel();
+    }
+  }
   else if( event.type == KeyMapper::PEV_PAUSE)
-    {
-      if( likely(event.bPressed))
-        {
-          if(this->isPaused)
-            this->resume();
-          else
-            this->pause();
-        }
-    }
+  {
+    if( likely(event.bPressed))
+    {
+      if(this->isPaused)
+        this->resume();
+      else
+        this->pause();
+    }
+  }
   else if( event.type == KeyMapper::PEV_QUIT)
-    {
-      if( event.bPressed) this->stop();
-    }
+  {
+    if( event.bPressed) this->stop();
+  }
+  else if (event.type == EV_MAIN_QUIT)
+    this->stop();
 }
 
Index: branches/world_entities/src/util/loading/load_param.cc
===================================================================
--- branches/world_entities/src/util/loading/load_param.cc	(revision 5527)
+++ branches/world_entities/src/util/loading/load_param.cc	(revision 5558)
@@ -17,7 +17,7 @@
 
 #include "load_param.h"
+#include "load_param_description.h"
 
 #include "list.h"
-#include "base_object.h"
 
 #include <stdarg.h>
@@ -31,5 +31,5 @@
  * @param ...: the parameter information (1. Parameter, 2. Default Value for the Parameter, ...)
 */
-BaseLoadParam::BaseLoadParam(const TiXmlElement* root, BaseObject* object, const char* paramName,
+LoadParamBase::LoadParamBase(const TiXmlElement* root, BaseObject* object, const char* paramName,
                              int paramCount, bool multi, const void* pointerToParam, ...)
 {
@@ -39,5 +39,5 @@
   this->pointerToParam = pointerToParam;
 
-  if (paramCount == 0 || this->pointerToParam)
+  if (paramCount == 0 || this->pointerToParam != NULL)
     this->loadString = "none";
   else
@@ -110,5 +110,5 @@
  * @returns a pointer to itself.
 */
-BaseLoadParam* BaseLoadParam::describe(const char* descriptionText)
+LoadParamBase* LoadParamBase::describe(const char* descriptionText)
 {
   if (LoadClassDescription::parametersDescription && this->paramDesc && !this->paramDesc->getDescription())
@@ -117,287 +117,4 @@
     }
   return this;
-}
-
-/**
- * @param paramName the name of the parameter to load
-*/
-LoadParamDescription::LoadParamDescription(const char* paramName)
-{
-  this->types = NULL;
-  this->description = NULL;
-  this->defaultValues = NULL;
-  this->paramName = new char[strlen(paramName)+1];
-  strcpy(this->paramName, paramName);
-}
-
-/**
- *  removes all the alocated memory
-*/
-LoadParamDescription::~LoadParamDescription()
-{
-  if (this->defaultValues != NULL)
-  {
-    for(int i = 0; i < this->paramCount; i++)
-    {
-      delete[] this->defaultValues[i];
-    }
-  }
-
-  delete[] this->types;
-  delete[] this->defaultValues;
-  delete[] this->paramName;
-  delete[] this->description;
-}
-
-/**
- * @param descriptionText The text to set as a description for this Parameter
-*/
-void LoadParamDescription::setDescription(const char* descriptionText)
-{
-  this->description = new char[strlen(descriptionText)+1];
-  strcpy(this->description, descriptionText);
-}
-
-/**
- *  prints out this parameter, its input method and the description (if availiable)
-*/
-void LoadParamDescription::print() const
-{
-  PRINT(3)(" <%s>", this->paramName);
-  for (int i = 0; i < this->paramCount; i++)
-    {
-      if (i > 0)
-        PRINT(3)(",");
-      switch (this->types[i])
-      {
-        default:
-          PRINTF(3)("none");
-          break;
-        case ParameterBool:
-          PRINT(3)("bool");
-          break;
-        case ParameterChar:
-          PRINT(3)("char");
-          break;
-        case ParameterString:
-          PRINT(3)("string");
-          break;
-        case ParameterInt:
-          PRINT(3)("int");
-          break;
-        case ParameterUInt:
-          PRINT(3)("Uint");
-          break;
-        case ParameterFloat:
-          PRINT(3)("float");
-          break;
-        case ParameterLong:
-          PRINT(3)("long");
-          break;
-        case ParameterXML:
-          PRINT(3)("XML");
-          break;
-      }
-    }
-  PRINT(3)("</%s>", this->paramName);
-  if (this->description)
-    PRINT(3)(" -- %s", this->description);
-  // default values
-  if (this->paramCount > 0)
-  {
-    PRINT(3)(" (Default: ");
-    for (int i = 0; i < this->paramCount; i++)
-    {
-      if (i > 0)
-        PRINT(3)(", ");
-      if (this->types[i] & ParameterString)
-      { // leave brackets !!
-        PRINT(3)("\"%s\"", this->defaultValues[i]);
-      }
-      else
-      {
-        PRINT(3)("%s", this->defaultValues[i]);
-      }
-    }
-    PRINT(3)(")");
-  }
-  PRINT(3)("\n");
-}
-
-/**
- *  A list, that holds all the classes that are loadable (classes not objects!!)
-*/
-tList<LoadClassDescription>* LoadClassDescription::classList = NULL;
-
-/**
- *  if the description of Parameters should be executed
-*/
-bool LoadClassDescription::parametersDescription = true;
-
-/**
- * @param className the name of the class to be loadable
-*/
-LoadClassDescription::LoadClassDescription(const char* className)
-{
-  this->className = new char[strlen(className)+1];
-  strcpy(this->className, className);
-
-  if (LoadClassDescription::classList == NULL)
-    LoadClassDescription::classList = new tList<LoadClassDescription>;
-
-  LoadClassDescription::classList->add(this);
-
-  this->paramList = new tList<LoadParamDescription>;
-}
-
-/**
- *  deletes a classDescription (deletes all the parameterDescriptions as well
-*/
-LoadClassDescription::~LoadClassDescription()
-{
-  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
-  LoadParamDescription* enumParamDesc = iterator->firstElement();
-  while (enumParamDesc)
-    {
-      delete enumParamDesc;
-      enumParamDesc = iterator->nextElement();
-    }
-  delete iterator;
-  delete this->paramList;
-
-  delete[] this->className;
-}
-
-void LoadClassDescription::deleteAllDescriptions()
-{
-  if (LoadClassDescription::classList != NULL)
-  {
-    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
-    LoadClassDescription* delElem = iterator->firstElement();
-    while (delElem != NULL)
-    {
-      delete delElem;
-      delElem = iterator->nextElement();
-    }
-    delete iterator;
-    delete LoadClassDescription::classList;
-  }
-  LoadClassDescription::classList = NULL;
-}
-
-
-/**
- *  adds a class to the list of loadable classes
- * @param className The name of the class to add
-
-   this function searches for the className string, and if found just returns the appropriate Class.
-   Otherwise it returns a new classDescription
-*/
-LoadClassDescription* LoadClassDescription::addClass(const char* className)
-{
-  if (LoadClassDescription::classList != NULL)
-  {
-    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
-   LoadClassDescription* enumClassDesc = iterator->firstElement();
-   while (enumClassDesc)
-     {
-       if (!strcmp(enumClassDesc->className, className))
-         {
-           delete iterator;
-           return enumClassDesc;
-         }
-       enumClassDesc = iterator->nextElement();
-     }
-   delete iterator;
-  }
-  return new LoadClassDescription(className);
-}
-
-/**
- *  does the same as addClass(const char* className), but with params
- * @param paramName the name of the parameter to add.
-*/
-LoadParamDescription* LoadClassDescription::addParam(const char* paramName)
-{
-  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
-  LoadParamDescription* enumParamDesc = iterator->firstElement();
-  while (enumParamDesc)
-    {
-      if (!strcmp(enumParamDesc->paramName, paramName))
-        {
-          delete iterator;
-          //return enumParamDesc;
-          return NULL;
-        }
-      enumParamDesc = iterator->nextElement();
-    }
-  delete iterator;
-
-  LoadParamDescription* newParam = new LoadParamDescription(paramName);
-
-  this->paramList->add(newParam);
-  return newParam;
-}
-
-/**
- *  prints out all loadable Classes, and their parameters
- * @param fileName prints the output to a File
- * @todo implement it
-*/
-void LoadClassDescription::printAll(const char* fileName)
-{
-  PRINT(3)("===============================================================\n");
-  PRINT(3)(" Listing all the Loadable Options (loaded since Game started).\n\n");
-  if (LoadClassDescription::classList != NULL)
-  {
-    tIterator<LoadClassDescription>* classIT = LoadClassDescription::classList->getIterator();
-    LoadClassDescription* enumClassDesc = classIT->firstElement();
-    while (enumClassDesc)
-     {
-       PRINT(3)("<%s>\n", enumClassDesc->className);
-       tIterator<LoadParamDescription>* paramIT = enumClassDesc->paramList->getIterator();
-       LoadParamDescription* enumParamDesc = paramIT->firstElement();
-       while (enumParamDesc)
-         {
-           enumParamDesc->print();
-           enumParamDesc = paramIT->nextElement();
-         }
-       delete paramIT;
-
-       PRINT(3)("</%s>\n\n", enumClassDesc->className);
-       enumClassDesc = classIT->nextElement();
-     }
-    delete classIT;
-  }
-  else
-    PRINT(3)("no Classes defined so far\n");
-  PRINT(3)("===============================================================\n");
-}
-
-/**
- * searches for classes, which beginn with classNameBegin
- * @param classNameBegin the beginning string of a Class
- * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards,
- * !! The strings MUST NOT be deleted !!
- */
-tList<const char>* LoadClassDescription::searchClassWithShort(const char* classNameBegin)
-{
-  unsigned int searchLength = strlen(classNameBegin);
-  tList<const char>* retVal = new tList<const char>;
-
-  tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
-  LoadClassDescription* enumClassDesc = iterator->firstElement();
-  while (enumClassDesc)
-  {
-    if (strlen(enumClassDesc->className)>searchLength+1 &&
-        !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))
-    {
-      retVal->add(enumClassDesc->className);
-    }
-    enumClassDesc = iterator->nextElement();
-  }
-  delete iterator;
-
-  return retVal;
 }
 
Index: branches/world_entities/src/util/loading/load_param.h
===================================================================
--- branches/world_entities/src/util/loading/load_param.h	(revision 5527)
+++ branches/world_entities/src/util/loading/load_param.h	(revision 5558)
@@ -23,64 +23,18 @@
 
 #include "functor_list.h"
-#include "base_object.h"
+
+#include "debug.h"
 
 #include "factory.h"
-#include "debug.h"
 #include "substring.h"
 #include "tinyxml.h"
+
 #include "helper_functions.h"
 
 // Forward Declaration //
 template<class T> class tList;
-
-/************************
-*** DESCRIPTION STUFF ***
-************************/
-//! A class that handles the description of loadable parameters
-class LoadParamDescription
-{
-  friend class BaseLoadParam;
-  friend class LoadClassDescription;
- public:
-  LoadParamDescription(const char* paramName);
-  ~LoadParamDescription();
-
-  void setDescription(const char* descriptionText);
-  /** @returns the descriptionString */
-  const char* getDescription() { return this->description; };
-
-  void print() const;
- private:
-  char*         paramName;             //!< The name of the parameter.
-  int           paramCount;            //!< The count of parameters.
-  int*          types;                 //!< What kind of parameters does this function take ??
-  char*         description;           //!< A longer description about this function.
-  char**        defaultValues;         //!< The 'Default Values'.
-};
-
-//! A class for descriptions of a loadable module
-class LoadClassDescription
-{
-  friend class BaseLoadParam;
- public:
-  LoadClassDescription(const char* className);
-  ~LoadClassDescription();
-
-  static LoadClassDescription* addClass(const char* className);
-  LoadParamDescription* addParam(const char* paramName);
-
-  static void deleteAllDescriptions();
-
-  static void printAll(const char* fileName = NULL);
-  static tList<const char>* searchClassWithShort(const char* classNameBegin);
-//  static const LoadParamDescription* getClass(const char* className);
-
- private:
-  static bool                          parametersDescription;  //!< if parameter-description should be enabled.
-  static tList<LoadClassDescription>*  classList;              //!< a list, that holds all the loadable classes. (after one instance has been loaded)
-  char*                                className;              //!< name of the class
-  tList<LoadParamDescription>*         paramList;              //!< List of parameters this class knows.
-};
-
+class LoadClassDescription;
+class LoadParamDescription;
+class MultiType;
 
 /**************************
@@ -88,11 +42,12 @@
 **************************/
 //! abstract Base class for a Loadable parameter
-class BaseLoadParam : public BaseObject
+class LoadParamBase : public BaseObject
 {
  public:
-  BaseLoadParam* describe(const char* descriptionText);
+  LoadParamBase* describe(const char* descriptionText);
+  LoadParamBase* defaultValues(unsigned int count, ...);
 
  protected:
-  BaseLoadParam(const TiXmlElement* root, BaseObject* object, const char* paramName, int paramCount, bool multi, const void* pointerToParam, ...);
+  LoadParamBase(const TiXmlElement* root, BaseObject* object, const char* paramName, int paramCount, bool multi, const void* pointerToParam, ...);
 
  protected:
@@ -101,4 +56,6 @@
   const char*              loadString;           //!< The string loaded by this LoadParam
   const void*              pointerToParam;       //!< A Pointer to a Parameter.
+
+  MultiType*               defaultValue;
 };
 
@@ -140,5 +97,5 @@
 #define LoadParam0() \
 LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(), bool multi = false) \
-  : BaseLoadParam(root, pt2Object, paramName, 0, multi, NULL, "") \
+  : LoadParamBase(root, pt2Object, paramName, 0, multi, NULL) \
 { \
   if (loadString != NULL && root != NULL) \
@@ -156,5 +113,5 @@
  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE), \
            bool multi = false, type1##_TYPE default1 = type1##_DEFAULT) \
-  : BaseLoadParam(root, pt2Object, paramName, 1, multi, NULL, type1##_PARAM, default1) \
+  : LoadParamBase(root, pt2Object, paramName, 1, multi, NULL, type1##_PARAM, default1) \
 { \
       if (loadString != NULL && root != NULL) \
@@ -175,5 +132,5 @@
  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE, type2##_TYPE), \
            bool multi = false,  type1##_TYPE default1 = type1##_DEFAULT,  type2##_TYPE default2 = type2##_DEFAULT) \
-  : BaseLoadParam(root, pt2Object, paramName, 2, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2) \
+  : LoadParamBase(root, pt2Object, paramName, 2, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2) \
 { \
       if (loadString != NULL && root != NULL) \
@@ -201,5 +158,5 @@
  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE, type2##_TYPE, type3##_TYPE), \
            bool multi = false, type1##_TYPE default1 = type1##_DEFAULT, type2##_TYPE default2 = type2##_DEFAULT, type3##_TYPE default3 = type3##_DEFAULT)\
-  : BaseLoadParam(root, pt2Object, paramName, 3, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2, type3##_PARAM, default3) \
+  : LoadParamBase(root, pt2Object, paramName, 3, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2, type3##_PARAM, default3) \
 { \
       if (loadString != NULL && root != NULL) \
@@ -229,5 +186,5 @@
            bool multi = false, type1##_TYPE default1 = type1##_DEFAULT, type2##_TYPE default2 = type2##_DEFAULT, type3##_TYPE default3 = type3##_DEFAULT, \
            type4##_TYPE default4 = type4##_DEFAULT) \
-  : BaseLoadParam(root, pt2Object, paramName, 4, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2, type3##_PARAM, default3, \
+  : LoadParamBase(root, pt2Object, paramName, 4, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2, type3##_PARAM, default3, \
                   type4##_PARAM, default4) \
 { \
@@ -260,5 +217,5 @@
            bool multi = false, type1##_TYPE default1 = type1##_DEFAULT, type2##_TYPE default2 = type2##_DEFAULT, type3##_TYPE default3 = type3##_DEFAULT, \
            type4##_TYPE default4 = type4##_DEFAULT, type5##_TYPE default5 = type5##_DEFAULT ) \
-  : BaseLoadParam(root, pt2Object, paramName, 5, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2, type3##_PARAM, default3, \
+  : LoadParamBase(root, pt2Object, paramName, 5, multi, NULL, type1##_PARAM, default1, type2##_PARAM, default2, type3##_PARAM, default3, \
                   type4##_PARAM, default4, type5##_PARAM, default5) \
 { \
@@ -283,5 +240,5 @@
 #define LoadParamPT(type1) \
  LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(type1##_TYPE), type1##_TYPE pointerToParam, bool multi = false) \
-  : BaseLoadParam(root, pt2Object, paramName, 1, multi, pointerToParam, type1##_PARAM) \
+  : LoadParamBase(root, pt2Object, paramName, 1, multi, pointerToParam, type1##_PARAM) \
 { \
       if (pointerToParam != NULL && root != NULL) \
@@ -292,5 +249,5 @@
 
 //! derived template class, so all the Classes can load something.
-template<class T> class LoadParam : public BaseLoadParam
+template<class T> class LoadParam : public LoadParamBase
 {
   public:
@@ -305,5 +262,5 @@
   // loads a Ti-XML-element
   LoadParam(const TiXmlElement* root, const char* paramName, T* pt2Object, void(T::*function)(const TiXmlElement*), bool multi = false)
-  : BaseLoadParam(root, pt2Object, paramName, 1, multi, NULL, "XML")
+  : LoadParamBase(root, pt2Object, paramName, 1, multi, NULL, "XML")
   {
     if (root != NULL)
Index: branches/world_entities/src/util/loading/load_param_description.cc
===================================================================
--- branches/world_entities/src/util/loading/load_param_description.cc	(revision 5558)
+++ branches/world_entities/src/util/loading/load_param_description.cc	(revision 5558)
@@ -0,0 +1,304 @@
+/*
+   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: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#include "load_param_description.h"
+
+#include "list.h"
+#include <stdarg.h>
+#include "stdlibincl.h"
+#include "functor_list.h"
+
+/**
+ * @param paramName the name of the parameter to load
+ */
+LoadParamDescription::LoadParamDescription(const char* paramName)
+{
+  this->types = NULL;
+  this->description = NULL;
+  this->defaultValues = NULL;
+  this->paramName = new char[strlen(paramName)+1];
+  strcpy(this->paramName, paramName);
+}
+
+/**
+ *  removes all the alocated memory
+ */
+LoadParamDescription::~LoadParamDescription()
+{
+  if (this->defaultValues != NULL)
+  {
+    for(int i = 0; i < this->paramCount; i++)
+    {
+      delete[] this->defaultValues[i];
+    }
+  }
+
+  delete[] this->types;
+  delete[] this->defaultValues;
+  delete[] this->paramName;
+  delete[] this->description;
+}
+
+/**
+ * @param descriptionText The text to set as a description for this Parameter
+ */
+void LoadParamDescription::setDescription(const char* descriptionText)
+{
+  this->description = new char[strlen(descriptionText)+1];
+  strcpy(this->description, descriptionText);
+}
+
+/**
+ *  prints out this parameter, its input method and the description (if availiable)
+ */
+void LoadParamDescription::print() const
+{
+  PRINT(3)(" <%s>", this->paramName);
+  for (int i = 0; i < this->paramCount; i++)
+  {
+    if (i > 0)
+      PRINT(3)(",");
+    switch (this->types[i])
+    {
+      default:
+        PRINTF(3)("none");
+        break;
+      case ParameterBool:
+        PRINT(3)("bool");
+        break;
+      case ParameterChar:
+        PRINT(3)("char");
+        break;
+      case ParameterString:
+        PRINT(3)("string");
+        break;
+      case ParameterInt:
+        PRINT(3)("int");
+        break;
+      case ParameterUInt:
+        PRINT(3)("Uint");
+        break;
+      case ParameterFloat:
+        PRINT(3)("float");
+        break;
+      case ParameterLong:
+        PRINT(3)("long");
+        break;
+      case ParameterXML:
+        PRINT(3)("XML");
+        break;
+    }
+  }
+  PRINT(3)("</%s>", this->paramName);
+  if (this->description)
+    PRINT(3)(" -- %s", this->description);
+  // default values
+  if (this->paramCount > 0)
+  {
+    PRINT(3)(" (Default: ");
+    for (int i = 0; i < this->paramCount; i++)
+    {
+      if (i > 0)
+        PRINT(3)(", ");
+      if (this->types[i] & ParameterString)
+      { // leave brackets !!
+        PRINT(3)("\"%s\"", this->defaultValues[i]);
+      }
+      else
+      {
+        PRINT(3)("%s", this->defaultValues[i]);
+      }
+    }
+    PRINT(3)(")");
+  }
+  PRINT(3)("\n");
+}
+
+/**
+ *  A list, that holds all the classes that are loadable (classes not objects!!)
+ */
+tList<LoadClassDescription>* LoadClassDescription::classList = NULL;
+
+/**
+ *  if the description of Parameters should be executed
+ */
+bool LoadClassDescription::parametersDescription = false;
+
+/**
+ * @param className the name of the class to be loadable
+ */
+LoadClassDescription::LoadClassDescription(const char* className)
+{
+  this->className = new char[strlen(className)+1];
+  strcpy(this->className, className);
+
+  if (LoadClassDescription::classList == NULL)
+    LoadClassDescription::classList = new tList<LoadClassDescription>;
+
+  LoadClassDescription::classList->add(this);
+
+  this->paramList = new tList<LoadParamDescription>;
+}
+
+/**
+ *  deletes a classDescription (deletes all the parameterDescriptions as well
+ */
+LoadClassDescription::~LoadClassDescription()
+{
+  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
+  LoadParamDescription* enumParamDesc = iterator->firstElement();
+  while (enumParamDesc)
+  {
+    delete enumParamDesc;
+    enumParamDesc = iterator->nextElement();
+  }
+  delete iterator;
+  delete this->paramList;
+
+  delete[] this->className;
+}
+
+void LoadClassDescription::deleteAllDescriptions()
+{
+  if (LoadClassDescription::classList != NULL)
+  {
+    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+    LoadClassDescription* delElem = iterator->firstElement();
+    while (delElem != NULL)
+    {
+      delete delElem;
+      delElem = iterator->nextElement();
+    }
+    delete iterator;
+    delete LoadClassDescription::classList;
+  }
+  LoadClassDescription::classList = NULL;
+}
+
+
+/**
+ *  adds a class to the list of loadable classes
+ * @param className The name of the class to add
+
+   this function searches for the className string, and if found just returns the appropriate Class.
+   Otherwise it returns a new classDescription
+ */
+LoadClassDescription* LoadClassDescription::addClass(const char* className)
+{
+  if (LoadClassDescription::classList != NULL)
+  {
+    tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+    LoadClassDescription* enumClassDesc = iterator->firstElement();
+    while (enumClassDesc)
+    {
+      if (!strcmp(enumClassDesc->className, className))
+      {
+        delete iterator;
+        return enumClassDesc;
+      }
+      enumClassDesc = iterator->nextElement();
+    }
+    delete iterator;
+  }
+  return new LoadClassDescription(className);
+}
+
+/**
+ *  does the same as addClass(const char* className), but with params
+ * @param paramName the name of the parameter to add.
+ */
+LoadParamDescription* LoadClassDescription::addParam(const char* paramName)
+{
+  tIterator<LoadParamDescription>* iterator = this->paramList->getIterator();
+  LoadParamDescription* enumParamDesc = iterator->firstElement();
+  while (enumParamDesc)
+  {
+    if (!strcmp(enumParamDesc->paramName, paramName))
+    {
+      delete iterator;
+          //return enumParamDesc;
+      return NULL;
+    }
+    enumParamDesc = iterator->nextElement();
+  }
+  delete iterator;
+
+  LoadParamDescription* newParam = new LoadParamDescription(paramName);
+
+  this->paramList->add(newParam);
+  return newParam;
+}
+
+/**
+ *  prints out all loadable Classes, and their parameters
+ * @param fileName prints the output to a File
+ * @todo implement it
+ */
+void LoadClassDescription::printAll(const char* fileName)
+{
+  PRINT(3)("===============================================================\n");
+  PRINT(3)(" Listing all the Loadable Options (loaded since Game started).\n\n");
+  if (LoadClassDescription::classList != NULL)
+  {
+    tIterator<LoadClassDescription>* classIT = LoadClassDescription::classList->getIterator();
+    LoadClassDescription* enumClassDesc = classIT->firstElement();
+    while (enumClassDesc)
+    {
+      PRINT(3)("<%s>\n", enumClassDesc->className);
+      tIterator<LoadParamDescription>* paramIT = enumClassDesc->paramList->getIterator();
+      LoadParamDescription* enumParamDesc = paramIT->firstElement();
+      while (enumParamDesc)
+      {
+        enumParamDesc->print();
+        enumParamDesc = paramIT->nextElement();
+      }
+      delete paramIT;
+
+      PRINT(3)("</%s>\n\n", enumClassDesc->className);
+      enumClassDesc = classIT->nextElement();
+    }
+    delete classIT;
+  }
+  else
+    PRINT(3)("no Classes defined so far\n");
+  PRINT(3)("===============================================================\n");
+}
+
+/**
+ * searches for classes, which beginn with classNameBegin
+ * @param classNameBegin the beginning string of a Class
+ * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards,
+ * !! The strings MUST NOT be deleted !!
+ */
+tList<const char>* LoadClassDescription::searchClassWithShort(const char* classNameBegin)
+{
+  unsigned int searchLength = strlen(classNameBegin);
+  tList<const char>* retVal = new tList<const char>;
+
+  tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+  LoadClassDescription* enumClassDesc = iterator->firstElement();
+  while (enumClassDesc)
+  {
+    if (strlen(enumClassDesc->className)>searchLength+1 &&
+        !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))
+    {
+      retVal->add(enumClassDesc->className);
+    }
+    enumClassDesc = iterator->nextElement();
+  }
+  delete iterator;
+
+  return retVal;
+}
Index: branches/world_entities/src/util/loading/load_param_description.h
===================================================================
--- branches/world_entities/src/util/loading/load_param_description.h	(revision 5558)
+++ branches/world_entities/src/util/loading/load_param_description.h	(revision 5558)
@@ -0,0 +1,80 @@
+/*
+   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: Benjamin Grauer
+   co-programmer: ...
+*/
+
+/*!
+ * @file load_param.h
+ * A Class and macro-functions, that makes our lives easy to load-in parameters
+ */
+
+#ifndef _LOAD_PARAM_DESCRIPTION_H
+#define _LOAD_PARAM_DESCRIPTION_H
+
+#include "base_object.h"
+
+// Forward Declaration //
+template<class T> class tList;
+class MultiType;
+
+/************************
+*** DESCRIPTION STUFF ***
+************************/
+//! A class that handles the description of loadable parameters
+class LoadParamDescription
+{
+  friend class LoadParamBase;
+  friend class LoadClassDescription;
+ public:
+  LoadParamDescription(const char* paramName);
+  ~LoadParamDescription();
+
+  void setDescription(const char* descriptionText);
+  /** @returns the descriptionString */
+  const char* getDescription() { return this->description; };
+
+  void print() const;
+ private:
+  char*         paramName;             //!< The name of the parameter.
+  int           paramCount;            //!< The count of parameters.
+  int*          types;                 //!< What kind of parameters does this function take ??
+  char*         description;           //!< A longer description about this function.
+  char**        defaultValues;         //!< The 'Default Values'. @TODO MAKE THIS A MULTITYPE
+};
+
+//! A class for descriptions of a loadable module
+class LoadClassDescription
+{
+  friend class LoadParamBase;
+ public:
+  LoadClassDescription(const char* className);
+  ~LoadClassDescription();
+
+  static LoadClassDescription* addClass(const char* className);
+  LoadParamDescription* addParam(const char* paramName);
+
+  static void deleteAllDescriptions();
+
+  static void printAll(const char* fileName = NULL);
+  static tList<const char>* searchClassWithShort(const char* classNameBegin);
+//  static const LoadParamDescription* getClass(const char* className);
+
+ private:
+  static bool                          parametersDescription;  //!< if parameter-description should be enabled.
+  static tList<LoadClassDescription>*  classList;              //!< a list, that stores all the loadable classes. (after one instance has been loaded)
+  char*                                className;              //!< name of the class
+
+  tList<LoadParamDescription>*         paramList;              //!< List of parameters this class knows.
+};
+
+#endif /* _LOAD_PARAM_DESCRIPTION_H */
Index: branches/world_entities/src/world_entities/player.cc
===================================================================
--- branches/world_entities/src/world_entities/player.cc	(revision 5527)
+++ branches/world_entities/src/world_entities/player.cc	(revision 5558)
@@ -23,7 +23,7 @@
 #include "factory.h"
 
-#include "weapon_manager.h"
-#include "test_gun.h"
-#include "turret.h"
+#include "weapons/weapon_manager.h"
+#include "weapons/test_gun.h"
+#include "weapons/turret.h"
 
 #include "list.h"
@@ -337,5 +337,5 @@
 }
 
-#include "aiming_turret.h"
+#include "weapons/aiming_turret.h"
 // FIXME THIS MIGHT BE CONSIDERED EITHER A FEATURE, OR A BUG
 void Player::ADDWEAPON()
Index: branches/world_entities/src/world_entities/weapons/aim.cc
===================================================================
--- branches/world_entities/src/world_entities/weapons/aim.cc	(revision 5558)
+++ branches/world_entities/src/world_entities/weapons/aim.cc	(revision 5558)
@@ -0,0 +1,157 @@
+/*
+   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: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
+
+#include "aim.h"
+
+#include "load_param.h"
+#include "graphics_engine.h"
+#include "glincl.h"
+#include "state.h"
+#include "material.h"
+
+using namespace std;
+
+
+/**
+ * standart constructor
+ */
+Aim::Aim (const TiXmlElement* root)
+{
+  this->init();
+
+  if (root)
+    this->loadParams(root);
+  else
+    this->setTexture("maps/aim.png");
+}
+
+/**
+ * destroys a Aim
+*/
+Aim::~Aim ()
+{
+  if (this->material)
+    delete this->material;
+}
+
+/**
+ * initializes the Aim
+ */
+void Aim::init()
+{
+  this->setClassID(CL_CROSSHAIR, "Aim");
+  this->setName("Aim");
+
+  this->setLayer(E2D_LAYER_TOP);
+  this->setRotationSpeed(5);
+  this->setSize(GraphicsEngine::getInstance()->getResolutionX()/10.0);
+
+//  this->setBindNode(this);
+  this->material = new Material;
+}
+
+
+void Aim::loadParams(const TiXmlElement* root)
+{
+  static_cast<PNode*>(this)->loadParams(root);
+
+  LoadParam<Aim>(root, "texture", this, &Aim::setTexture)
+      .describe("the texture-file to load onto the Aim");
+
+  LoadParam<Aim>(root, "size", this, &Aim::setSize)
+      .describe("the size of the Aim in Pixels");
+
+  LoadParam<Aim>(root, "rotation-speed", this, &Aim::setRotationSpeed)
+      .describe("the Speed with which the Aim should rotate");
+}
+
+
+/**
+ * sets the size of the Aim.
+ * @param size the size in pixels
+ */
+void Aim::setSize(float size)
+{
+  this->setSize2D(size/2, size/2);
+}
+
+/**
+ * sets the material to load
+ * @param textureFile The texture-file to load onto the crosshair
+ */
+void Aim::setTexture(const char* textureFile)
+{
+  this->material->setDiffuseMap(textureFile);
+}
+
+/**
+ * ticks the Aim
+ * @param dt the time to ticks
+ */
+void Aim::tick(float dt)
+{
+  // let the crosshair rotate
+  this->shiftDir2D(dt * rotationSpeed);
+
+
+  float z = 0.0f;
+  glReadPixels ((int)this->getAbsCoor2D().x,
+                 GraphicsEngine::getInstance()->getResolutionY()-(int)this->getAbsCoor2D().y-1,
+                 1,
+                 1,
+                 GL_DEPTH_COMPONENT,
+                 GL_FLOAT,
+                 &z);
+
+
+  GLdouble objX=.0, objY=.0, objZ=.0;
+  gluUnProject(this->getAbsCoor2D().x,
+               GraphicsEngine::getInstance()->getResolutionY()-this->getAbsCoor2D().y-1,
+               .99,  // z
+               GraphicsEngine::modMat,
+               GraphicsEngine::projMat,
+               GraphicsEngine::viewPort,
+               &objX,
+               &objY,
+               &objZ );
+
+  this->setAbsCoor(objX, objY, objZ);
+}
+
+/**
+ * draws the crosshair
+ */
+void Aim::draw() const
+{
+  glPushMatrix();
+  glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0);
+
+  glRotatef(this->getAbsDir2D(), 0,0,1);
+  this->material->select();
+  glBegin(GL_TRIANGLE_STRIP);
+  glTexCoord2f(0, 0);
+  glVertex2f(-this->getSizeX2D(), -this->getSizeY2D());
+  glTexCoord2f(1, 0);
+  glVertex2f(this->getSizeX2D(), -this->getSizeY2D());
+  glTexCoord2f(0, 1);
+  glVertex2f(-this->getSizeX2D(), this->getSizeY2D());
+  glTexCoord2f(1, 1);
+  glVertex2f(this->getSizeX2D(), this->getSizeY2D());
+  glEnd();
+  glPopMatrix();
+
+}
Index: branches/world_entities/src/world_entities/weapons/aim.h
===================================================================
--- branches/world_entities/src/world_entities/weapons/aim.h	(revision 5558)
+++ branches/world_entities/src/world_entities/weapons/aim.h	(revision 5558)
@@ -0,0 +1,44 @@
+/*!
+ * @file aim.h
+ *  Definition of
+ */
+
+#ifndef _AIM_H
+#define _AIM_H
+
+#include "p_node.h"
+#include "element_2d.h"
+
+// FORWARD DECLARATION
+class Model;
+class Material;
+class TiXmlElement;
+
+//! An Aim for zooming in on Targets.
+class Aim : public PNode, public Element2D {
+
+ public:
+  Aim(const TiXmlElement* root = NULL);
+  virtual ~Aim();
+
+  void init();
+  void loadParams(const TiXmlElement* root);
+
+  inline void selectTarget(PNode* target) { this->setParent(target); };
+  inline PNode* getTarget(PNode* target) { return this->getParent(); };
+
+
+  void setSize(float size);
+  void setTexture(const char* textureFile);
+  /** @param rotationSpeed the speed at what the crosshair should rotate */
+  inline void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };
+
+  virtual void tick(float dt);
+  virtual void draw() const;
+
+ private:
+   Material*        material;             //!< a material for the Aim.
+   float            rotationSpeed;        //!< Speed of the Rotation.
+};
+
+#endif /* _AIM_H */
Index: branches/world_entities/src/world_entities/world_entity.cc
===================================================================
--- branches/world_entities/src/world_entities/world_entity.cc	(revision 5527)
+++ branches/world_entities/src/world_entities/world_entity.cc	(revision 5558)
@@ -31,5 +31,5 @@
 SHELL_COMMAND(model, WorldEntity, loadModel)
     ->describe("sets the Model of the WorldEntity")
-    ->defaultValues(1, "models/ships/reaplow.obj");
+    ->defaultValues(2, "models/ships/fighter.obj", 1.0);
 
 
