Index: /orxonox/trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- /orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4830)
+++ /orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4831)
@@ -75,5 +75,4 @@
     return -1;
   this->initVideo(640, 480, 16);
-  this->isInit = true;
 }
 
Index: /orxonox/trunk/src/lib/graphics/graphics_engine.h
===================================================================
--- /orxonox/trunk/src/lib/graphics/graphics_engine.h	(revision 4830)
+++ /orxonox/trunk/src/lib/graphics/graphics_engine.h	(revision 4831)
@@ -34,8 +34,9 @@
 
     void setWindowName(const char* windowName, const char* icon);
-    int setGLattribs();
+
     int setResolution(int width, int height, int bpp);
     void setFullscreen(bool fullscreen = false);
     static void setBackgroundColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha = 1.0);
+
 
     /** \returns the x resolution */
@@ -47,4 +48,9 @@
 
     int resolutionChanged(const SDL_ResizeEvent& resizeInfo);
+
+
+    static void showMouse(bool show) { (show)?SDL_ShowCursor(SDL_ENABLE):SDL_ShowCursor(SDL_DISABLE); };
+    static bool isMouseVisible() {return (SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE)?true:false; };
+    static void stealWMEvents(bool steal) { (steal)?SDL_WM_GrabInput(SDL_GRAB_ON):SDL_WM_GrabInput(SDL_GRAB_OFF); };
 
     static void enter2DMode();
@@ -69,4 +75,5 @@
     GraphicsEngine();
     int initVideo(unsigned int resX, unsigned int resY, unsigned int bbp);
+    int setGLattribs();
 
   public:
Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 4830)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 4831)
@@ -1054,4 +1054,5 @@
       GarbageCollector::getInstance()->tick(this->dtS);
 
+
       /** actualy the Graphics Engine should tick the world not the other way around...
          but since we like the things not too complicated we got it this way around
Index: /orxonox/trunk/src/world_entities/weapons/crosshair.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/crosshair.cc	(revision 4830)
+++ /orxonox/trunk/src/world_entities/weapons/crosshair.cc	(revision 4831)
@@ -63,4 +63,8 @@
   EventHandler::getInstance()->subscribe(this, ES_GAME, EV_MOUSE_MOTION);
 
+  // center the mouse on the screen, and also hide the cursors
+  SDL_WarpMouse(GraphicsEngine::getInstance()->getResolutionX()/2, GraphicsEngine::getInstance()->getResolutionY()/2);
+  GraphicsEngine::showMouse(false);
+  GraphicsEngine::stealWMEvents(true);
 }
 
@@ -75,4 +79,7 @@
   // delete what has to be deleted here
   EventHandler::getInstance()->unsubscribe(this);
+
+  GraphicsEngine::showMouse(true);
+  GraphicsEngine::stealWMEvents(false);
 }
 
@@ -182,6 +189,5 @@
              pos, pos+1, pos+2 );
 
-  printf("%d %d %d\n", (int)pos[0], (int)pos[1], (int)pos[2]);
-  this->rotation += 5;
+  this->rotation += 1;
 
   glTranslatef(position2D[0], position2D[1], 0);
Index: /orxonox/trunk/src/world_entities/weapons/weapon.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon.h	(revision 4830)
+++ /orxonox/trunk/src/world_entities/weapons/weapon.h	(revision 4831)
@@ -69,5 +69,4 @@
 /**
  * This is used as a container for all the different kinds of weapons that may exist
- * Animations/Sounds/etc. will be handled in the Extensions of this class.
  */
 class Weapon : public WorldEntity
@@ -122,5 +121,5 @@
   float                times[WS_STATE_COUNT];            //!< Times to stay in the different States @see WeaponState
   SoundBuffer*         soundBuffers[WA_ACTION_COUNT];    //!< SoundBuffers for all actions @see WeaponAction
-
+  Animation3D*         animation[WS_STATE_COUNT];        //!< Animations for all the States (you can say yourself on what part of the gun this animation acts).
 
 
@@ -130,6 +129,7 @@
 
  private:
-  bool                 enabled;                          //<! states if the weapon is enabled or not
-  Projectile*          projectile;                       //<! the projectile used for this weapon
+   WeaponState          state;                           //!< The state this weapon is in.
+   bool                 enabled;                         //<! states if the weapon is enabled or not
+   Projectile*          projectile;                      //<! the projectile used for this weapon
   //WeaponSound sound;
 };
