Index: orxonox/trunk/src/Makefile.am
===================================================================
--- orxonox/trunk/src/Makefile.am	(revision 5067)
+++ orxonox/trunk/src/Makefile.am	(revision 5068)
@@ -46,4 +46,5 @@
                   util/loading/load_param.cc \
                   util/state.cc \
+                  util/shell.cc \
                   util/user_control.cc \
                   story_entities/story_entity.cc \
@@ -99,4 +100,5 @@
                  util/garbage_collector.h \
                  util/state.h \
+                 util/shell.h \
                  util/user_control.h \
                  util/resource_manager.h \
Index: orxonox/trunk/src/Makefile.in
===================================================================
--- orxonox/trunk/src/Makefile.in	(revision 5067)
+++ orxonox/trunk/src/Makefile.in	(revision 5068)
@@ -62,11 +62,11 @@
 	orxonox-resource_manager.$(OBJEXT) orxonox-factory.$(OBJEXT) \
 	orxonox-load_param.$(OBJEXT) orxonox-state.$(OBJEXT) \
-	orxonox-user_control.$(OBJEXT) orxonox-story_entity.$(OBJEXT) \
-	orxonox-campaign.$(OBJEXT) orxonox-world.$(OBJEXT) \
-	orxonox-world_entity.$(OBJEXT) orxonox-camera.$(OBJEXT) \
-	orxonox-player.$(OBJEXT) orxonox-npc.$(OBJEXT) \
-	orxonox-environment.$(OBJEXT) orxonox-skysphere.$(OBJEXT) \
-	orxonox-skybox.$(OBJEXT) orxonox-terrain.$(OBJEXT) \
-	orxonox-satellite.$(OBJEXT) \
+	orxonox-shell.$(OBJEXT) orxonox-user_control.$(OBJEXT) \
+	orxonox-story_entity.$(OBJEXT) orxonox-campaign.$(OBJEXT) \
+	orxonox-world.$(OBJEXT) orxonox-world_entity.$(OBJEXT) \
+	orxonox-camera.$(OBJEXT) orxonox-player.$(OBJEXT) \
+	orxonox-npc.$(OBJEXT) orxonox-environment.$(OBJEXT) \
+	orxonox-skysphere.$(OBJEXT) orxonox-skybox.$(OBJEXT) \
+	orxonox-terrain.$(OBJEXT) orxonox-satellite.$(OBJEXT) \
 	orxonox-character_attributes.$(OBJEXT) \
 	orxonox-test_entity.$(OBJEXT) orxonox-weapon_manager.$(OBJEXT) \
@@ -121,4 +121,5 @@
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-resource_manager.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-satellite.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox-shell.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-skybox.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-skysphere.Po \
@@ -303,4 +304,5 @@
                   util/loading/load_param.cc \
                   util/state.cc \
+                  util/shell.cc \
                   util/user_control.cc \
                   story_entities/story_entity.cc \
@@ -356,4 +358,5 @@
                  util/garbage_collector.h \
                  util/state.h \
+                 util/shell.h \
                  util/user_control.h \
                  util/resource_manager.h \
@@ -523,4 +526,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-resource_manager.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-satellite.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-shell.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-skybox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-skysphere.Po@am__quote@
@@ -782,4 +786,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-state.obj `if test -f 'util/state.cc'; then $(CYGPATH_W) 'util/state.cc'; else $(CYGPATH_W) '$(srcdir)/util/state.cc'; fi`
+
+orxonox-shell.o: util/shell.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-shell.o -MD -MP -MF "$(DEPDIR)/orxonox-shell.Tpo" -c -o orxonox-shell.o `test -f 'util/shell.cc' || echo '$(srcdir)/'`util/shell.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-shell.Tpo" "$(DEPDIR)/orxonox-shell.Po"; else rm -f "$(DEPDIR)/orxonox-shell.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/shell.cc' object='orxonox-shell.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-shell.Po' tmpdepfile='$(DEPDIR)/orxonox-shell.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-shell.o `test -f 'util/shell.cc' || echo '$(srcdir)/'`util/shell.cc
+
+orxonox-shell.obj: util/shell.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-shell.obj -MD -MP -MF "$(DEPDIR)/orxonox-shell.Tpo" -c -o orxonox-shell.obj `if test -f 'util/shell.cc'; then $(CYGPATH_W) 'util/shell.cc'; else $(CYGPATH_W) '$(srcdir)/util/shell.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-shell.Tpo" "$(DEPDIR)/orxonox-shell.Po"; else rm -f "$(DEPDIR)/orxonox-shell.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/shell.cc' object='orxonox-shell.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-shell.Po' tmpdepfile='$(DEPDIR)/orxonox-shell.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-shell.obj `if test -f 'util/shell.cc'; then $(CYGPATH_W) 'util/shell.cc'; else $(CYGPATH_W) '$(srcdir)/util/shell.cc'; fi`
 
 orxonox-user_control.o: util/user_control.cc
Index: orxonox/trunk/src/defs/class_id.h
===================================================================
--- orxonox/trunk/src/defs/class_id.h	(revision 5067)
+++ orxonox/trunk/src/defs/class_id.h	(revision 5068)
@@ -192,4 +192,5 @@
   CL_NUMBER                     =    0x00000b0c,
   CL_FAST_FACTORY               =    0x00000c01,
+  CL_SHELL                      =    0x00000c11,
 
 
Index: orxonox/trunk/src/lib/graphics/render2D/element_2d.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/render2D/element_2d.cc	(revision 5067)
+++ orxonox/trunk/src/lib/graphics/render2D/element_2d.cc	(revision 5068)
@@ -55,4 +55,5 @@
 
   this->setVisibility(true);
+  this->setActiveness(true);
   this->setPosition2D(0,0);
   this->setAlignment(E2D_ALIGN_NONE);
Index: orxonox/trunk/src/lib/graphics/render2D/element_2d.h
===================================================================
--- orxonox/trunk/src/lib/graphics/render2D/element_2d.h	(revision 5067)
+++ orxonox/trunk/src/lib/graphics/render2D/element_2d.h	(revision 5068)
@@ -69,4 +69,7 @@
     /** @param visible true if the Element should be visible false otherwise (will not be rendered) */
     inline void setVisibility(bool visible) { this->visible = visible; };
+    /** @param active true if the Element should be active, false otherwise (will not be ticked) */
+    inline void setActiveness(bool active) { this->active = active; };
+
 
     /** @param bindNode the Node this 2D-element should follow. if NULL the Element will not follow anything */
@@ -76,4 +79,6 @@
     /** @returns the visibility state */
     inline bool isVisible() { return this->visible; };
+    /** @returns the active-State */
+    inline bool isActive() { return this->active; };
 
     virtual void tick(float dt);
@@ -91,6 +96,7 @@
 
   private:
-    bool                    visible;
-    E2D_LAYER               layer;
+    bool                    visible;          //!< If the given Element2D is visible.
+    bool                    active;           //!< If the given Element2D is active.
+    E2D_LAYER               layer;            //!< What layer this Element2D is on.
 };
 
Index: orxonox/trunk/src/lib/graphics/render2D/render_2d.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/render2D/render_2d.cc	(revision 5067)
+++ orxonox/trunk/src/lib/graphics/render2D/render_2d.cc	(revision 5068)
@@ -105,5 +105,6 @@
     while (elem != NULL)
     {
-      elem->tick(dt);
+      if (elem->isActive())
+        elem->tick(dt);
       elem = iterator->nextElement();
     }
Index: orxonox/trunk/src/lib/util/list.h
===================================================================
--- orxonox/trunk/src/lib/util/list.h	(revision 5067)
+++ orxonox/trunk/src/lib/util/list.h	(revision 5068)
@@ -1,6 +1,6 @@
 /*!
-  \file list.h
-  \brief a File that includes a List-template
-*/
+ * @file list.h
+ * a File that includes a List-template
+ */
 
 #ifndef _LIST_H
@@ -132,4 +132,5 @@
   void add(T* entity);
   void remove(T* entity);
+  void removeLast();
   void flush();
   T* firstElement();
@@ -214,5 +215,4 @@
 {
   this->currentEl = this->first;
-  listElement<T>* te;
   while( this->currentEl != NULL)
     {
@@ -233,4 +233,27 @@
 }
 
+/**
+ * removes the Last Element of the List
+ */
+ template<class T>
+     inline void tList<T>::removeLast()
+{
+  if (this->last == NULL)
+    return;
+  else if (this->last == this->first)
+  {
+    delete this->first;
+    this->first = NULL;
+    this->last = NULL;
+    this->size--;
+  }
+  else
+  {
+    listElement<T>* delLast = this->last;
+    this->last->prev->next = NULL;
+    this->last = this->last->prev;
+    delete delLast;
+  }
+}
 
 /**
Index: orxonox/trunk/src/util/shell.cc
===================================================================
--- orxonox/trunk/src/util/shell.cc	(revision 5068)
+++ orxonox/trunk/src/util/shell.cc	(revision 5068)
@@ -0,0 +1,146 @@
+/*
+   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_
+
+#include "shell.h"
+
+using namespace std;
+
+
+/**
+ * standard constructor
+ */
+Shell::Shell ()
+{
+   this->setClassID(CL_SHELL, "Shell");
+}
+
+
+Shell* Shell::singletonRef = NULL;
+
+/**
+ * standard deconstructor
+ */
+Shell::~Shell ()
+{
+  // delete what has to be deleted here
+
+  Shell::singletonRef = NULL;
+}
+
+
+
+
+void setBufferDisplaySize(unsigned int bufferDisplaySize);
+
+/**
+ * deletes all the Buffers
+ */
+void Shell::flushBuffers()
+{
+
+}
+
+/**
+ * adds a new Line to the List of Buffers
+ * @param line the Line as in the first argument in printf
+ * @param args the arguments as a va_list
+ */
+void Shell::addBufferLine(const char* line, va_list args)
+{
+}
+
+/**
+ * moves the buffer around lineCount lines upwards (negative values move down)
+ * @param lineCount the Count of lines to move upwards
+ */
+void Shell::moveBuffer(int lineCount)
+{
+}
+
+/**
+ * @param lineNumber the n-th line from the bottom
+ * @returns the Buffer at Line lineNumber
+ */
+const char* Shell::getBufferLine(unsigned int lineNumber)
+{
+}
+
+
+/**
+ * deletes the InputLine
+ */
+void Shell::flushInputLine()
+{
+}
+
+/**
+ * adds one character to the inputLine
+ * @param character the character to add to the inputLine
+ */
+void Shell::addCharacter(char character)
+{
+}
+
+/**
+ * adds multiple Characters to thr inputLine
+ * @param characters a '\0' terminated char-array to add to the InputLine
+ */
+void Shell::addCharacters(const char* characters)
+{
+}
+
+/**
+ * removes characterCount characters from the InputLine
+ * @param characterCount the count of Characters to remove from the input Line
+ */
+void Shell::removeCharacters(unsigned int characterCount)
+{
+}
+
+
+/**
+ * ticks the Shell for dt Seconds
+ * @param dt the elapsed time since the last tick();
+ */
+void Shell::tick(float dt)
+{
+}
+
+/**
+ * displays the Shell
+ */
+void Shell::draw() const
+{
+}
+
+
+/**
+ * autocompletes the Shell's inputLine
+ * @returns true, if a result was found, false otherwise
+ */
+bool Shell::autoComplete()
+{
+
+}
+
+/**
+ * displays some nice output from the Shell
+ */
+void Shell::debug() const
+{
+
+}
Index: orxonox/trunk/src/util/shell.h
===================================================================
--- orxonox/trunk/src/util/shell.h	(revision 5068)
+++ orxonox/trunk/src/util/shell.h	(revision 5068)
@@ -0,0 +1,81 @@
+/*!
+ * @file shell.h
+ * Definition of a on-screen-shell
+*/
+
+#ifndef _SHELL_H
+#define _SHELL_H
+
+#include "element_2d.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+
+
+// FORWARD DECLARATION
+class Text;
+template<class T> class tList;
+
+//! A class that is able to redirect all output to a openGL-Shell, and that one can use to input some commands
+/**
+ * the major idea is, that all the Output can be redirected to the Shell,
+ * and does not have to be displayed to the opening Shell, this is good,
+ * for developers using Windows, where all output is otherwise redirected
+ * to stdout.txt
+ *
+ * Furthermore the Shell should enable us, to input some simple commands
+ * Each Class can tell check itself in to the Shell, and listen for commands.
+ *
+ * @todo implement what is written above :/
+ */
+class Shell : public Element2D {
+
+  public:
+    virtual ~Shell();
+    /** @returns a Pointer to the only object of this Class */
+    inline static Shell* getInstance(void) { if (!Shell::singletonRef) Shell::singletonRef = new Shell();  return Shell::singletonRef; };
+
+
+    void setBufferSize(unsigned int bufferSize) { this->bufferSize = bufferSize; };
+
+    void setBufferDisplaySize(unsigned int bufferDisplaySize);
+
+    // BUFFER //
+    void flushBuffers();
+    void addBufferLine(const char* Line, va_list args);
+    void moveBuffer(int lineCount);
+    const char* getBufferLine(unsigned int lineNumber);
+
+  // inputLine
+    void flushInputLine();
+    void addCharacter(char character);
+    void addCharacters(const char* characters);
+    void removeCharacters(unsigned int characterCount = 1);
+
+
+    // Element2D-functions
+    void tick(float dt);
+    virtual void draw() const;
+
+    void debug() const;
+
+  private:
+    bool autoComplete();
+
+
+  private:
+    Shell();
+    static Shell*          singletonRef;
+
+    unsigned int           bufferSize;
+    unsigned int           bufferDisplaySize;
+
+    char*                  inputLine;
+
+    tList<const char>*     buffer;
+
+    tList<Text>*           bufferText;             //!< A list of sored bufferLines of the Shell
+    Text*                  inputLineText;          //!< The inputLine of the Shell
+};
+
+#endif /* _SHELL_H */
Index: orxonox/trunk/src/world_entities/skysphere.cc
===================================================================
--- orxonox/trunk/src/world_entities/skysphere.cc	(revision 5067)
+++ orxonox/trunk/src/world_entities/skysphere.cc	(revision 5068)
@@ -1,3 +1,2 @@
-
 /*
    orxonox - the future of 3D-vertical-scrollers
