Index: orxonox/trunk/src/Makefile.am
===================================================================
--- orxonox/trunk/src/Makefile.am	(revision 5039)
+++ orxonox/trunk/src/Makefile.am	(revision 5040)
@@ -46,4 +46,5 @@
                   util/loading/load_param.cc \
                   util/state.cc \
+                  util/user_control.cc \
                   story_entities/story_entity.cc \
                   story_entities/campaign.cc \
@@ -98,4 +99,5 @@
                  util/garbage_collector.h \
                  util/state.h \
+                 util/user_control.h \
                  util/resource_manager.h \
                  util/loading/factory.h \
Index: orxonox/trunk/src/Makefile.in
===================================================================
--- orxonox/trunk/src/Makefile.in	(revision 5039)
+++ orxonox/trunk/src/Makefile.in	(revision 5040)
@@ -62,10 +62,11 @@
 	orxonox-resource_manager.$(OBJEXT) orxonox-factory.$(OBJEXT) \
 	orxonox-load_param.$(OBJEXT) orxonox-state.$(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-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) \
@@ -133,4 +134,5 @@
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-track_node.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-turret.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox-user_control.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-vector.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-weapon.Po \
@@ -301,4 +303,5 @@
                   util/loading/load_param.cc \
                   util/state.cc \
+                  util/user_control.cc \
                   story_entities/story_entity.cc \
                   story_entities/campaign.cc \
@@ -353,4 +356,5 @@
                  util/garbage_collector.h \
                  util/state.h \
+                 util/user_control.h \
                  util/resource_manager.h \
                  util/loading/factory.h \
@@ -532,4 +536,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-track_node.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-turret.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-user_control.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-vector.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-weapon.Po@am__quote@
@@ -777,4 +782,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-user_control.o: util/user_control.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-user_control.o -MD -MP -MF "$(DEPDIR)/orxonox-user_control.Tpo" -c -o orxonox-user_control.o `test -f 'util/user_control.cc' || echo '$(srcdir)/'`util/user_control.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-user_control.Tpo" "$(DEPDIR)/orxonox-user_control.Po"; else rm -f "$(DEPDIR)/orxonox-user_control.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/user_control.cc' object='orxonox-user_control.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-user_control.Po' tmpdepfile='$(DEPDIR)/orxonox-user_control.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-user_control.o `test -f 'util/user_control.cc' || echo '$(srcdir)/'`util/user_control.cc
+
+orxonox-user_control.obj: util/user_control.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-user_control.obj -MD -MP -MF "$(DEPDIR)/orxonox-user_control.Tpo" -c -o orxonox-user_control.obj `if test -f 'util/user_control.cc'; then $(CYGPATH_W) 'util/user_control.cc'; else $(CYGPATH_W) '$(srcdir)/util/user_control.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-user_control.Tpo" "$(DEPDIR)/orxonox-user_control.Po"; else rm -f "$(DEPDIR)/orxonox-user_control.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='util/user_control.cc' object='orxonox-user_control.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-user_control.Po' tmpdepfile='$(DEPDIR)/orxonox-user_control.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-user_control.obj `if test -f 'util/user_control.cc'; then $(CYGPATH_W) 'util/user_control.cc'; else $(CYGPATH_W) '$(srcdir)/util/user_control.cc'; fi`
 
 orxonox-story_entity.o: story_entities/story_entity.cc
Index: orxonox/trunk/src/defs/class_id.h
===================================================================
--- orxonox/trunk/src/defs/class_id.h	(revision 5039)
+++ orxonox/trunk/src/defs/class_id.h	(revision 5040)
@@ -134,5 +134,6 @@
   CL_EVENT                      =    0x00000501,
   CL_KEY_MAPPER                 =    0x00000502,
-  CL_CROSSHAIR                  =    0x0000050f,
+  CL_USER_CONTROL               =    0x00000511,
+  CL_CROSSHAIR                  =    0x00000512,
 
   CL_WEAPON_MANAGER             =    0x00000503,
Index: orxonox/trunk/src/util/user_control.cc
===================================================================
--- orxonox/trunk/src/util/user_control.cc	(revision 5040)
+++ orxonox/trunk/src/util/user_control.cc	(revision 5040)
@@ -0,0 +1,49 @@
+/*
+   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 "user_control.h"
+
+using namespace std;
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+UserControl::UserControl ()
+{
+   this->setClassID(CL_USER_CONTROL, "UserControl");
+
+   /* If you make a new class, what is most probably the case when you write this file
+      don't forget to:
+       1. Add the new file new_class.cc to the ./src/Makefile.am
+       2. Add the class identifier to ./src/class_id.h eg. CL_NEW_CLASS
+
+      Advanced Topics:
+      - if you want to let your object be managed via the ObjectManager make sure to read
+        the object_manager.h header comments. You will use this most certanly only if you
+        make many objects of your class, like a weapon bullet.
+   */
+}
+
+
+/**
+ * standard deconstructor
+*/
+UserControl::~UserControl ()
+{
+  // delete what has to be deleted here
+}
Index: orxonox/trunk/src/util/user_control.h
===================================================================
--- orxonox/trunk/src/util/user_control.h	(revision 5040)
+++ orxonox/trunk/src/util/user_control.h	(revision 5040)
@@ -0,0 +1,46 @@
+/*!
+ * @file user_control.h
+ * @brief Control of the stearing device by the User
+*/
+
+#ifndef _USER_CONTROL_H
+#define _USER_CONTROL_H
+
+#include "base_object.h"
+
+typedef enum ControlType
+{
+  CONTROL_AIM_MOVE_ON_SCREEN,
+  CONTROL_AIM_STAYS_CENTERED,
+  CONTROL_AIM_SMOOTHES_CAMERA,
+  CONTROL_AIM_MOVES_SCREEN_ON_EDGE,
+};
+
+// FORWARD DECLARATION
+class PNode;
+
+
+//! A Class the main input device uses for stearing the Ship/human/whatsoever through the level
+class UserControl : public BaseObject {
+
+ public:
+  UserControl();
+  virtual ~UserControl();
+
+  void setAffectedObjects(PNode* camera, PNode* target);
+  void setFollowObject(PNode* follower);
+
+  void setControlType(ControlType controlType);
+
+ private:
+   ControlType            controlType;
+   float                  speed;
+   float                  suspense;
+
+   PNode*                 camera;
+   PNode*                 target;
+   PNode*                 follower;
+
+};
+
+#endif /* _USER_CONTROL_H */
