Index: /orxonox/trunk/src/lib/coord/p_node.cc
===================================================================
--- /orxonox/trunk/src/lib/coord/p_node.cc	(revision 4954)
+++ /orxonox/trunk/src/lib/coord/p_node.cc	(revision 4955)
@@ -626,24 +626,24 @@
   {
     glBegin(GL_LINE_STRIP);
-    glVertex3f( .5,  .5, -.5);
-    glVertex3f( .5,  .5,  .5);
-    glVertex3f(-.5,  .5,  .5);
-    glVertex3f(-.5, -.5,  .5);
-    glVertex3f( .5,  .5, -.5);
-    glVertex3f( .5, -.5, -.5);
-    glVertex3f(-.5, -.5, -.5);
-    glVertex3f(-.5,  .5, -.5);
+    glVertex3f( .5*size,  .5*size, -.5*size);
+    glVertex3f( .5*size,  .5*size,  .5*size);
+    glVertex3f(-.5*size,  .5*size,  .5*size);
+    glVertex3f(-.5*size, -.5*size,  .5*size);
+    glVertex3f( .5*size,  .5*size, -.5*size);
+    glVertex3f( .5*size, -.5*size, -.5*size);
+    glVertex3f(-.5*size, -.5*size, -.5*size);
+    glVertex3f(-.5*size,  .5*size, -.5*size);
     glEnd();
     glBegin(GL_LINE_STRIP);
-    glVertex3f(-.5, -.5, -.5);
-    glVertex3f(-.5, -.5,  .5);
-    glVertex3f( .5, -.5,  .5);
-    glVertex3f( .5, -.5, -.5);
+    glVertex3f(-.5*size, -.5*size, -.5*size);
+    glVertex3f(-.5*size, -.5*size,  .5*size);
+    glVertex3f( .5*size, -.5*size,  .5*size);
+    glVertex3f( .5*size, -.5*size, -.5*size);
     glEnd();
     glBegin(GL_LINES);
-    glVertex3f( .5, -.5,  .5);
-    glVertex3f( .5,  .5,  .5);
-    glVertex3f(-.5, -.5,  .5);
-    glVertex3f(-.5,  .5,  .5);
+    glVertex3f( .5*size, -.5*size,  .5*size);
+    glVertex3f( .5*size,  .5*size,  .5*size);
+    glVertex3f(-.5*size, -.5*size,  .5*size);
+    glVertex3f(-.5*size,  .5*size,  .5*size);
     glEnd();
   }
Index: /orxonox/trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- /orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4954)
+++ /orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4955)
@@ -316,5 +316,5 @@
 void GraphicsEngine::enter2DMode()
 {
-  GraphicsEngine::storeMatrices();
+  //GraphicsEngine::storeMatrices();
   SDL_Surface *screen = SDL_GetVideoSurface();
 
@@ -433,4 +433,5 @@
 void GraphicsEngine::draw() const
 {
+  GraphicsEngine::storeMatrices();
   Render2D::getInstance()->draw(E2D_ALL_LAYERS);
   LightManager::getInstance()->draw();
Index: /orxonox/trunk/src/lib/graphics/render2D/render_2d.cc
===================================================================
--- /orxonox/trunk/src/lib/graphics/render2D/render_2d.cc	(revision 4954)
+++ /orxonox/trunk/src/lib/graphics/render2D/render_2d.cc	(revision 4955)
@@ -114,4 +114,5 @@
 /**
  * renders all the Elements of the Render2D-engine
+ * @param layer the Layer to draw
  */
 void Render2D::draw(unsigned int layer) const
@@ -137,5 +138,4 @@
     drawLayer << 1;
   }
-
   GraphicsEngine::leave2DMode();
 
Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 4954)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 4955)
@@ -917,5 +917,5 @@
 
       /* update tick the rest */
-      TrackManager::getInstance()->tick(this->dtS);
+      //TrackManager::getInstance()->tick(this->dtS);
       this->localCamera->tick(this->dtS);
       // tick the engines
Index: /orxonox/trunk/src/world_entities/player.cc
===================================================================
--- /orxonox/trunk/src/world_entities/player.cc	(revision 4954)
+++ /orxonox/trunk/src/world_entities/player.cc	(revision 4955)
@@ -46,6 +46,6 @@
 
   //weapons:
-  Weapon* wpRight = new TestGun(0);
-  Weapon* wpLeft = new TestGun(1);
+  Weapon* wpRight = new TestGun(this->weaponMan, 0);
+  Weapon* wpLeft = new TestGun(this->weaponMan, 1);
 
   this->weaponMan->addWeapon(wpRight);
@@ -80,7 +80,7 @@
 
   //weapons:
-  Weapon* wpRight = new TestGun(0);
+  Weapon* wpRight = new TestGun(this->weaponMan, 0);
   wpRight->setName("testGun Right");
-  Weapon* wpLeft = new TestGun(1);
+  Weapon* wpLeft = new TestGun(this->weaponMan, 1);
   wpLeft->setName("testGun Left");
 
Index: /orxonox/trunk/src/world_entities/weapons/crosshair.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/crosshair.cc	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/crosshair.cc	(revision 4955)
@@ -165,5 +165,5 @@
   gluUnProject(position2D[0],
                GraphicsEngine::getInstance()->getResolutionY()-position2D[1]-1,
-               .99,
+               .99,  // z
                GraphicsEngine::modMat,
                GraphicsEngine::projMat,
@@ -183,9 +183,4 @@
 void Crosshair::draw() const
 {
-  GraphicsEngine::storeMatrices();
-
-
-
-
 //   glBegin(GL_TRIANGLES);
 //   glColor3f(1,0,0);
@@ -194,8 +189,5 @@
 //   glVertex3f(objX, objY, objZ+1);
 //   glEnd();
-
-  this->debugDraw();
-
-  GraphicsEngine::enter2DMode();
+  glPushMatrix();
   GLdouble pos[3];
   gluProject(this->getAbsCoor().x,
@@ -221,5 +213,5 @@
   glVertex2f(size, size);
   glEnd();
-
-  GraphicsEngine::leave2DMode();
-}
+  glPopMatrix();
+
+}
Index: /orxonox/trunk/src/world_entities/weapons/projectile.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/projectile.cc	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/projectile.cc	(revision 4955)
@@ -91,7 +91,8 @@
 void Projectile::setVelocity(const Vector &velocity)
 {
-  Vector offsetVel = this->velocity = velocity;
-  offsetVel.normalize();
-  this->velocity += (offsetVel * 50.0);
+  //Vector offsetVel =
+  this->velocity = velocity;
+ // offsetVel.normalize();
+  //this->velocity += (offsetVel * 50.0);
 }
 
Index: /orxonox/trunk/src/world_entities/weapons/test_gun.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/test_gun.cc	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/test_gun.cc	(revision 4955)
@@ -26,4 +26,5 @@
 #include "model.h"
 #include "test_bullet.h"
+#include "weapon_manager.h"
 
 #include "state.h"
@@ -44,5 +45,6 @@
    creates a new weapon
 */
-TestGun::TestGun (int leftRight)
+TestGun::TestGun (WeaponManager* weaponManager, int leftRight)
+  : Weapon(weaponManager)
 {
   this->setClassID(CL_TEST_GUN, "TestGun");
@@ -158,7 +160,18 @@
   Projectile* pj =  dynamic_cast<Projectile*>(this->getProjectileFactory()->resurrect());
 
+  PNode* target = this->getWeaponManager()->getFixedTarget();
+
+  if (target != NULL)
+  {
+    target->debugDraw();
+    Vector test = ((target->getAbsCoor() - this->getAbsCoor())*5);
+    pj->setVelocity(test/20.0);//this->getVelocity());
+  }
+  else
+    pj->setVelocity(target->getVelocity());
+
+
   pj->setAbsCoor(this->getEmissionPoint());
   pj->setAbsDir(this->getAbsDir());
-  pj->setVelocity(this->getVelocity());
   State::getWorldEntityList()->add(pj);
 }
@@ -191,4 +204,6 @@
 void TestGun::draw ()
 {
+  this->getWeaponManager()->getFixedTarget()->debugDraw(10);
+
   /* draw gun body */
   glMatrixMode(GL_MODELVIEW);
Index: /orxonox/trunk/src/world_entities/weapons/test_gun.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/test_gun.h	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/test_gun.h	(revision 4955)
@@ -29,5 +29,5 @@
   {
   public:
-    TestGun (int leftRight);
+    TestGun (WeaponManager* weaponManager, int leftRight);
     virtual ~TestGun ();
 
Index: /orxonox/trunk/src/world_entities/weapons/weapon.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon.cc	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/weapon.cc	(revision 4955)
@@ -39,7 +39,8 @@
  * creates a new weapon
 */
-Weapon::Weapon ()
+Weapon::Weapon (WeaponManager* weaponManager)
 {
   this->init();
+  this->setWeaponManager(weaponManager);
 }
 
@@ -88,4 +89,6 @@
   this->energy = .0;
   this->energyMax = 10.0;
+
+  this->setWeaponManager(NULL);
 }
 
Index: /orxonox/trunk/src/world_entities/weapons/weapon.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon.h	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/weapon.h	(revision 4955)
@@ -24,5 +24,5 @@
 // FORWARD DECLARATION
 class Projectile;
-class Weapon;
+class WeaponManager;
 class Animation3D;
 class TiXmlElement;
@@ -72,5 +72,5 @@
   public:
     // INITIALISATION //
-    Weapon ();
+    Weapon (WeaponManager* weaponManager = NULL);
     Weapon(const TiXmlElement* root);
     virtual ~Weapon ();
@@ -85,4 +85,8 @@
     ///////////////////
 
+    /** @param weaponManager sets the WeaponManager for this Weapon (NULL if free))*/
+    inline void setWeaponManager(WeaponManager* weaponManager) { this->weaponManager = weaponManager; };
+    /** @returns the WeaponManager of this Weapon (or NULL if it is free) */
+    inline WeaponManager* getWeaponManager() const { return this->weaponManager; };
 
     /** @returns true if the Weapon is Active  (this is used to check if the weapon must be drawn)*/
@@ -199,4 +203,6 @@
     ClassID              projectile;                      //!< the projectile used for this weapon (since they should be generated via macro and the FastFactory, only the ClassID must be known.)
     FastFactory*         projectileFactory;               //!< A factory, that produces and handles the projectiles.
+
+    WeaponManager*       weaponManager;                   //!< The weaponManager this weapon is connected to. if NULL it is assumed, that the weapon is freely connected to an entity without a binding WeaponManager.
   };
 
Index: /orxonox/trunk/src/world_entities/weapons/weapon_manager.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon_manager.h	(revision 4954)
+++ /orxonox/trunk/src/world_entities/weapons/weapon_manager.h	(revision 4955)
@@ -14,9 +14,9 @@
 
 #include "p_node.h"
+#include "crosshair.h"
 
 // FORWARD DECLARATION
 class PNode;
 class Weapon;
-class Crosshair;
 template <class T> class tAnimation;
 
@@ -87,8 +87,12 @@
     void removeWeapon(Weapon* weapon, int configID = -1);
 
+
+
     void nextWeaponConfig();
     void previousWeaponConfig();
     void changeWeaponConfig(int weaponConfig);
 
+    /** @returns a fixed target namely the Crosshair's 3D position */
+    inline PNode* getFixedTarget() { return this->crosshair; }
     void fire();
 
