Index: /trunk/orxonox.kdevelop
===================================================================
--- /trunk/orxonox.kdevelop	(revision 5099)
+++ /trunk/orxonox.kdevelop	(revision 5100)
@@ -10,9 +10,9 @@
     <projectdirectory>.</projectdirectory>
     <absoluteprojectpath>false</absoluteprojectpath>
-    <description></description>
+    <description/>
     <secondaryLanguages>
       <language>C</language>
     </secondaryLanguages>
-    <versioncontrol></versioncontrol>
+    <versioncontrol/>
   </general>
   <kdevcustomproject>
@@ -21,5 +21,5 @@
       <directoryradio>build</directoryradio>
       <customdirectory>/</customdirectory>
-      <programargs></programargs>
+      <programargs/>
       <terminal>false</terminal>
       <autocompile>true</autocompile>
@@ -28,5 +28,5 @@
     <build>
       <buildtool>make</buildtool>
-      <builddir></builddir>
+      <builddir/>
     </build>
     <make>
@@ -35,21 +35,21 @@
       <prio>0</prio>
       <dontact>false</dontact>
-      <makebin></makebin>
-      <makeoptions></makeoptions>
+      <makebin/>
+      <makeoptions/>
       <selectedenvironment>default</selectedenvironment>
       <environments>
         <default/>
       </environments>
-      <defaulttarget></defaulttarget>
+      <defaulttarget/>
     </make>
   </kdevcustomproject>
   <kdevdebugger>
     <general>
-      <dbgshell></dbgshell>
-      <programargs></programargs>
-      <gdbpath></gdbpath>
-      <configGdbScript></configGdbScript>
-      <runShellScript></runShellScript>
-      <runGdbScript></runGdbScript>
+      <dbgshell/>
+      <programargs/>
+      <gdbpath/>
+      <configGdbScript/>
+      <runShellScript/>
+      <runGdbScript/>
       <breakonloadinglibs>true</breakonloadinglibs>
       <separatetty>false</separatetty>
@@ -131,5 +131,5 @@
     </codecompletion>
     <creategettersetter>
-      <prefixGet></prefixGet>
+      <prefixGet/>
       <prefixSet>set</prefixSet>
       <prefixVariable>m_,_</prefixVariable>
@@ -157,7 +157,7 @@
   <kdevdocumentation>
     <projectdoc>
-      <docsystem></docsystem>
-      <docurl></docurl>
-      <usermanualurl></usermanualurl>
+      <docsystem/>
+      <docurl/>
+      <usermanualurl/>
     </projectdoc>
   </kdevdocumentation>
Index: /trunk/src/Makefile.am
===================================================================
--- /trunk/src/Makefile.am	(revision 5099)
+++ /trunk/src/Makefile.am	(revision 5100)
@@ -151,4 +151,5 @@
                  lib/util/ini_parser.h \
                  lib/util/substring.h \
+                 lib/util/array.h \
                  lib/util/list.h \
                  lib/util/color.h \
Index: /trunk/src/Makefile.in
===================================================================
--- /trunk/src/Makefile.in	(revision 5099)
+++ /trunk/src/Makefile.in	(revision 5100)
@@ -409,4 +409,5 @@
                  lib/util/ini_parser.h \
                  lib/util/substring.h \
+                 lib/util/array.h \
                  lib/util/list.h \
                  lib/util/color.h \
@@ -440,7 +441,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/Makefile
+	  $(AUTOMAKE) --gnu  src/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/Makefile.in
===================================================================
--- /trunk/src/lib/Makefile.in	(revision 5099)
+++ /trunk/src/lib/Makefile.in	(revision 5100)
@@ -189,7 +189,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/collision_detection/Makefile.in
===================================================================
--- /trunk/src/lib/collision_detection/Makefile.in	(revision 5099)
+++ /trunk/src/lib/collision_detection/Makefile.in	(revision 5100)
@@ -224,7 +224,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/collision_detection/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/collision_detection/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/collision_detection/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/collision_detection/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/event/Makefile.in
===================================================================
--- /trunk/src/lib/event/Makefile.in	(revision 5099)
+++ /trunk/src/lib/event/Makefile.in	(revision 5100)
@@ -212,7 +212,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/event/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/event/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/event/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/event/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/graphics/Makefile.in
===================================================================
--- /trunk/src/lib/graphics/Makefile.in	(revision 5099)
+++ /trunk/src/lib/graphics/Makefile.in	(revision 5100)
@@ -179,7 +179,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/graphics/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/graphics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/graphics/importer/Makefile.am
===================================================================
--- /trunk/src/lib/graphics/importer/Makefile.am	(revision 5099)
+++ /trunk/src/lib/graphics/importer/Makefile.am	(revision 5100)
@@ -20,5 +20,4 @@
                  material.h \
                  texture.h \
-                 array.h \
                  anorms.h \
                  anormtab.h
Index: /trunk/src/lib/graphics/importer/Makefile.in
===================================================================
--- /trunk/src/lib/graphics/importer/Makefile.in	(revision 5099)
+++ /trunk/src/lib/graphics/importer/Makefile.in	(revision 5100)
@@ -201,5 +201,4 @@
                  material.h \
                  texture.h \
-                 array.h \
                  anorms.h \
                  anormtab.h
@@ -218,7 +217,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/graphics/importer/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/graphics/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: unk/src/lib/graphics/importer/array.h
===================================================================
--- /trunk/src/lib/graphics/importer/array.h	(revision 5099)
+++ 	(revision )
@@ -1,186 +1,0 @@
-/*
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-### File Specific:
-   main-programmer: Benjamin Grauer
-   co-programmer: ...
-*/
-
-/*!
-  \file array.h
-  \brief Contains the Array Class that handles float arrays.
-  this class creates a Array of a semi-Dynamic length.
-  beware, that after finalizing the array may not be resized again.
-*/
-
-#ifndef _ARRAY_H
-#define _ARRAY_H
-#include "debug.h"
-
-//! Array Class that handles dynamic-float arrays.
-template<class T> class Array
-{
-  public:
-    Array ();
-    ~Array();
-
-    void finalizeArray ();
-    void addEntry (T entry);
-    void addEntry(T entry0, T entry1, T entry2);
-
-    /** @returns The array */
-    inline const T* getArray () const { return this->array; };
-    /** * @returns The Count of entries in the Array*/
-    inline unsigned int getCount()const { return this->entryCount; };
-    inline int getIndex(T* entry) const;
-    inline bool isFinalized() const { return this->finalized; }
-    void debug() const ;
-
-  private:
-    //! One entry of the Array
-    struct Entry
-    {
-      T            value;          //!< The value of this Entry.
-      Entry*       next;           //!< Pointer to the Next entry.
-    };
-
-    T*            array;           //!< The array that will be produced when finalizing the Array.
-    unsigned int  entryCount;      //!< The count of Entries in this Array.
-    bool          finalized;       //!< If this variable is set to true, the Array can not be changed anymore. true if finalized, false else (initially).
-    Entry*        firstEntry;      //!< Pointer to the first Entry of this Array
-    Entry*        currentEntry;    //!< Pointer to the current Entry of this Array. The one Entry we are working with.
-};
-
-
-/**
- *  creates a new Array
-*/
-template<class T>
-Array<T>::Array ()
-{
-  PRINTF(4)("crating new Array\n");
-  this->firstEntry = new Entry;
-  this->firstEntry->next =NULL;
-  this->currentEntry = this->firstEntry;
-  this->finalized = false;
-  this->entryCount = 0; //0 means one entry
-}
-
-/**
- *  deletes an Array.
-   It does this by first deleting all the array-entries, and then delete the array[] itself
-*/
-template<class T>
-Array<T>::~Array()
-{
-  PRINTF(4)("deleting array\n");
-  Entry* walker = this->firstEntry;
-  Entry* previous;
-  while (walker)
-  {
-    previous = walker;
-    walker = walker->next;
-    delete previous;
-  }
-  if (finalized)
-    delete []this->array;
-}
-
-/**
- *  finalizes an array.
-   This Function creates the array, and makes it ready to be sent to the application.
-*/
-template<class T>
-void Array<T>::finalizeArray ()
-{
-  PRINTF(4)("Finalizing array. Length: %i\n", entryCount);
-  //  if ((array = (GLfloat*)malloc( entryCount* sizeof(GLfloat))) == NULL)
-  if (!(this->array = new GLfloat [this->entryCount]))
-    PRINTF(0)("could not allocate %i data Blocks\n", this->entryCount);
-  Entry* walker = this->firstEntry;
-  for (int i=0; i<this->entryCount; i++)
-  {
-    this->array[i] = walker->value;
-    walker = walker->next;
-  }
-  walker = this->firstEntry;
-  Entry* previous;
-  while (walker)
-  {
-    previous = walker;
-    walker = walker->next;
-    delete previous;
-  }
-  this->firstEntry = NULL;
-  this->finalized = true;
-}
-
-/**
- *  adds a new Entry to the Array
- * @param entry Entry to add.
-*/
-template<class T>
-void Array<T>::addEntry (T entry)
-{
-  if (!this->finalized)
-  {
-    PRINTF(5)("adding new Entry to Array: %f\n", entry);
-
-    this->currentEntry->value = entry;
-    this->currentEntry->next = new Entry;
-    this->currentEntry = currentEntry->next;
-    this->currentEntry->next = NULL;
-    ++this->entryCount;
-  }
-  else
-    PRINTF(2)("adding failed, because array has already been finalized\n");
-}
-
-/**
- *  Adds 3 entries at once (convenience)
-*/
-template<class T>
-void Array<T>::addEntry (T entry0, T entry1, T entry2)
-{
-  this->addEntry(entry0);
-  this->addEntry(entry1);
-  this->addEntry(entry2);
-}
-
-
-/**
- *  gets back the index of the entry in the array. value check
- * @param entry: the entry to look up
- * @returns the index in the array, -1 if not found
- */
-template<class T>
-int Array<T>::getIndex(T* entry) const
-{
-  if( unlikely(this->finalized == false))
-    return -1;
-
-  for(int i = 0; i < this->entryCount; ++i)
-  {
-    if( unlikely(*entry == this->array[i]))
-      return i;
-  }
-}
-
-
-/**
- *  Simple debug info about the Array
-*/
-template<class T>
-void Array<T>::debug () const
-{
-  PRINT(0)("entryCount=%i, address=%p\n", this->entryCount, this->array);
-}
-
-#endif
Index: /trunk/src/lib/graphics/spatial_separation/Makefile.in
===================================================================
--- /trunk/src/lib/graphics/spatial_separation/Makefile.in	(revision 5099)
+++ /trunk/src/lib/graphics/spatial_separation/Makefile.in	(revision 5100)
@@ -205,7 +205,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/graphics/spatial_separation/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/graphics/spatial_separation/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/graphics/spatial_separation/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/graphics/spatial_separation/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/gui/Makefile.in
===================================================================
--- /trunk/src/lib/gui/Makefile.in	(revision 5099)
+++ /trunk/src/lib/gui/Makefile.in	(revision 5100)
@@ -241,7 +241,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/gui/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/gui/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/gui/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/gui/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/particles/Makefile.in
===================================================================
--- /trunk/src/lib/particles/Makefile.in	(revision 5099)
+++ /trunk/src/lib/particles/Makefile.in	(revision 5100)
@@ -209,7 +209,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/particles/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/physics/Makefile.in
===================================================================
--- /trunk/src/lib/physics/Makefile.in	(revision 5099)
+++ /trunk/src/lib/physics/Makefile.in	(revision 5100)
@@ -218,7 +218,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/physics/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/physics/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/physics/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/physics/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/sound/Makefile.in
===================================================================
--- /trunk/src/lib/sound/Makefile.in	(revision 5099)
+++ /trunk/src/lib/sound/Makefile.in	(revision 5100)
@@ -201,7 +201,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/sound/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/sound/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/sound/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/sound/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/tinyxml/Makefile.in
===================================================================
--- /trunk/src/lib/tinyxml/Makefile.in	(revision 5099)
+++ /trunk/src/lib/tinyxml/Makefile.in	(revision 5100)
@@ -204,7 +204,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/lib/tinyxml/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/lib/tinyxml/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/lib/tinyxml/Makefile
+	  $(AUTOMAKE) --gnu  src/lib/tinyxml/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/lib/util/array.h
===================================================================
--- /trunk/src/lib/util/array.h	(revision 5100)
+++ /trunk/src/lib/util/array.h	(revision 5100)
@@ -0,0 +1,193 @@
+/*
+   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 array.h
+  \brief Contains the Array Class that handles arrays of classes.
+  this class creates a Array of a semi-Dynamic length.
+  beware, that after finalizing the array may not be resized again.
+*/
+
+#ifndef _ARRAY_H
+#define _ARRAY_H
+#include "debug.h"
+
+//! Array Class that handles dynamic-type arrays.
+template<class T> class Array
+{
+  public:
+    Array ();
+    ~Array();
+
+    void finalizeArray ();
+    void addEntry (T entry);
+    void addEntry(T entry0, T entry1, T entry2);
+
+    /** @returns The array */
+    inline const T* getArray () const { return this->array; };
+    inline const T getEntry(unsigned int number) const;
+    /** * @returns The Count of entries in the Array*/
+    inline unsigned int getCount()const { return this->entryCount; };
+    inline int getIndex(T* entry) const;
+    inline bool isFinalized() const { return this->finalized; }
+    void debug() const ;
+
+  private:
+    //! One entry of the Array
+    struct Entry
+    {
+      T            value;          //!< The value of this Entry.
+      Entry*       next;           //!< Pointer to the Next entry.
+    };
+
+    T*            array;           //!< The array that will be produced when finalizing the Array.
+    unsigned int  entryCount;      //!< The count of Entries in this Array.
+    bool          finalized;       //!< If this variable is set to true, the Array can not be changed anymore. true if finalized, false else (initially).
+    Entry*        firstEntry;      //!< Pointer to the first Entry of this Array
+    Entry*        currentEntry;    //!< Pointer to the current Entry of this Array. The one Entry we are working with.
+};
+
+
+/**
+ *  creates a new Array
+*/
+template<class T>
+Array<T>::Array ()
+{
+  PRINTF(5)("crating new Array\n");
+  this->firstEntry = new Entry;
+  this->firstEntry->next =NULL;
+  this->currentEntry = this->firstEntry;
+  this->finalized = false;
+  this->entryCount = 0; //0 means one entry
+}
+
+template<class T>
+    const T Array<T>::getEntry(unsigned int number) const
+{
+  if (this->finalized && number < this->entryCount)
+    return this->array[number];
+}
+
+/**
+ *  deletes an Array.
+   It does this by first deleting all the array-entries, and then delete the array[] itself
+*/
+template<class T>
+Array<T>::~Array()
+{
+  PRINTF(5)("deleting array\n");
+  Entry* walker = this->firstEntry;
+  Entry* previous;
+  while (walker)
+  {
+    previous = walker;
+    walker = walker->next;
+    delete previous;
+  }
+  if (finalized)
+    delete[] this->array;
+}
+
+/**
+ *  finalizes an array.
+   This Function creates the array, and makes it ready to be sent to the application.
+*/
+template<class T>
+void Array<T>::finalizeArray ()
+{
+  PRINTF(5)("Finalizing array. Length: %i\n", entryCount);
+  if (!(this->array = new T [this->entryCount]))
+    PRINTF(1)("could not allocate %i data Blocks\n", this->entryCount);
+  Entry* walker = this->firstEntry;
+  for (int i=0; i<this->entryCount; i++)
+  {
+    this->array[i] = walker->value;
+    walker = walker->next;
+  }
+  walker = this->firstEntry;
+  Entry* previous;
+  while (walker)
+  {
+    previous = walker;
+    walker = walker->next;
+    delete previous;
+  }
+  this->firstEntry = NULL;
+  this->finalized = true;
+}
+
+/**
+ *  adds a new Entry to the Array
+ * @param entry Entry to add.
+*/
+template<class T>
+void Array<T>::addEntry (T entry)
+{
+  if (!this->finalized)
+  {
+    PRINTF(5)("adding new Entry to Array: %f\n", entry);
+
+    this->currentEntry->value = entry;
+    this->currentEntry->next = new Entry;
+    this->currentEntry = currentEntry->next;
+    this->currentEntry->next = NULL;
+    ++this->entryCount;
+  }
+  else
+    PRINTF(2)("adding failed, because array has already been finalized\n");
+}
+
+/**
+ *  Adds 3 entries at once (convenience)
+*/
+template<class T>
+void Array<T>::addEntry (T entry0, T entry1, T entry2)
+{
+  this->addEntry(entry0);
+  this->addEntry(entry1);
+  this->addEntry(entry2);
+}
+
+
+/**
+ *  gets back the index of the entry in the array. value check
+ * @param entry: the entry to look up
+ * @returns the index in the array, -1 if not found
+ */
+template<class T>
+int Array<T>::getIndex(T* entry) const
+{
+  if( unlikely(this->finalized == false))
+    return -1;
+
+  for(int i = 0; i < this->entryCount; ++i)
+  {
+    if( unlikely(*entry == this->array[i]))
+      return i;
+  }
+}
+
+
+/**
+ *  Simple debug info about the Array
+*/
+template<class T>
+void Array<T>::debug () const
+{
+  PRINT(0)("entryCount=%i, address=%p\n", this->entryCount, this->array);
+}
+
+#endif
Index: /trunk/src/subprojects/Makefile.in
===================================================================
--- /trunk/src/subprojects/Makefile.in	(revision 5099)
+++ /trunk/src/subprojects/Makefile.in	(revision 5100)
@@ -186,7 +186,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/subprojects/collision_detection/Makefile.in
===================================================================
--- /trunk/src/subprojects/collision_detection/Makefile.in	(revision 5099)
+++ /trunk/src/subprojects/collision_detection/Makefile.in	(revision 5100)
@@ -281,7 +281,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/collision_detection/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/collision_detection/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/collision_detection/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/collision_detection/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/subprojects/importer/Makefile.in
===================================================================
--- /trunk/src/subprojects/importer/Makefile.in	(revision 5099)
+++ /trunk/src/subprojects/importer/Makefile.in	(revision 5100)
@@ -250,7 +250,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/importer/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/importer/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/subprojects/particles/Makefile.in
===================================================================
--- /trunk/src/subprojects/particles/Makefile.in	(revision 5099)
+++ /trunk/src/subprojects/particles/Makefile.in	(revision 5100)
@@ -267,7 +267,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/particles/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/particles/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/subprojects/testmain/Makefile.in
===================================================================
--- /trunk/src/subprojects/testmain/Makefile.in	(revision 5099)
+++ /trunk/src/subprojects/testmain/Makefile.in	(revision 5100)
@@ -196,7 +196,7 @@
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign  src/subprojects/testmain/Makefile
+	  $(AUTOMAKE) --gnu  src/subprojects/testmain/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: /trunk/src/util/loading/load_param.cc
===================================================================
--- /trunk/src/util/loading/load_param.cc	(revision 5099)
+++ /trunk/src/util/loading/load_param.cc	(revision 5100)
@@ -17,4 +17,5 @@
 
 #include "list.h"
+#include "array.h"
 #include "base_object.h"
 
@@ -354,4 +355,6 @@
 /**
  *  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)
@@ -380,5 +383,49 @@
 }
 
-
+/**
+ * searches for classes, which beginn with classNameBegin
+ * @param classNameBegin the beginning string of a Class
+ * @return a NEW char-array with ClassNames. The ARRAY should be deleted afterwards,
+ * !! The strings MUST NOT be deleted !!
+ */
+Array<char*>* LoadClassDescription::searchClassWithShort(const char* classNameBegin)
+{
+  unsigned int searchLength = strlen(classNameBegin);
+  Array<char*>* retVal = new Array<char*>;
+
+  tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+  LoadClassDescription* enumClassDesc = iterator->nextElement();
+  while (enumClassDesc)
+  {
+    if (strlen(enumClassDesc->className)>searchLength+1 &&
+        !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))
+    {
+      retVal->addEntry(enumClassDesc->className);
+    }
+    enumClassDesc = iterator->nextElement();
+  }
+  delete iterator;
+
+  retVal->finalizeArray();
+  return retVal;
+}
+
+// const LoadParamDescription* LoadParamDescription::getClass(const char* className)
+// {
+//   tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator();
+//   LoadClassDescription* enumClassDesc = iterator->nextElement();
+//   while (enumClassDesc)
+//   {
+//     if (!strcmp(enumClassDesc->className, classNameBegin, className))
+//     {
+//       delete iterator;
+//       return enumClassDesc;
+//     }
+//     enumClassDesc = iterator->nextElement();
+//   }
+//   delete iterator;
+//
+//   return NULL;
+// }
 
 /**
Index: /trunk/src/util/loading/load_param.h
===================================================================
--- /trunk/src/util/loading/load_param.h	(revision 5099)
+++ /trunk/src/util/loading/load_param.h	(revision 5100)
@@ -31,4 +31,5 @@
 // Forward Declaration //
 template<class T> class tList;
+template<class T> class Array;
 
 //! macro that makes it even more easy to load a Parameter
@@ -310,6 +311,7 @@
   LoadParamDescription* addParam(const char* paramName);
 
-
   static void printAll(const char* fileName = NULL);
+  static Array<char*>* searchClassWithShort(const char* classNameBegin);
+//  static const LoadParamDescription* getClass(const char* className);
 
  private:
Index: /trunk/src/util/shell.cc
===================================================================
--- /trunk/src/util/shell.cc	(revision 5099)
+++ /trunk/src/util/shell.cc	(revision 5100)
@@ -20,7 +20,9 @@
 #include "text_engine.h"
 #include "list.h"
+#include "array.h"
 #include "graphics_engine.h"
 #include "event_handler.h"
 
+#include "load_param.h"
 #include "debug.h"
 #include <stdarg.h>
@@ -439,8 +441,48 @@
  * autocompletes the Shell's inputLine
  * @returns true, if a result was found, false otherwise
+ *
+ * @todo implement it!!
  */
 bool Shell::autoComplete()
 {
-  PRINTF(3)("AutoCompletion not implemented yet\n");
+  //PRINTF(3)("AutoCompletion not implemented yet\n");
+
+  char* completionLine = new char[strlen(inputLine)+1];
+  strcpy(completionLine, this->inputLine);
+
+   char* commandBegin = strrchr(completionLine, ' ');
+  if (commandBegin == NULL)
+    commandBegin = completionLine;
+  else
+  {
+    if(commandBegin >= completionLine + strlen(completionLine))
+      commandBegin = completionLine + strlen(completionLine);
+    else
+      commandBegin++;
+  }
+
+  printf("%s\n",commandBegin);
+   Array<char*>* classArray = LoadClassDescription::searchClassWithShort(commandBegin);
+   if (classArray->getCount() == 0)
+   {
+     delete[] completionLine;
+     delete classArray;
+     //PRINTF(0)("no completion found for %s\n", commandBegin);
+     return false;
+   }
+
+   for (unsigned int i = 0; i < classArray->getCount(); i++)
+   {
+     PRINTF(0)("%s\n", classArray->getEntry(i));
+   }
+   if (classArray->getCount() == 1)
+   {
+     this->removeCharacters(strlen(commandBegin));
+     this->addCharacters(classArray->getEntry(0));
+     this->addCharacter(' ');
+   }
+
+   delete[] completionLine;
+   delete classArray;
 }
 
