Index: code/branches/invaders/src/modules/invader/CMakeLists.txt
===================================================================
--- code/branches/invaders/src/modules/invader/CMakeLists.txt	(revision 9725)
+++ code/branches/invaders/src/modules/invader/CMakeLists.txt	(revision 9744)
@@ -4,4 +4,5 @@
   InvaderCenterPoint.cc
   InvaderShip.cc
+  InvaderWeapon.cc
 END_BUILD_UNIT
 )
@@ -13,4 +14,5 @@
     orxonox
     overlays
+    weapons
   SOURCE_FILES ${Invader_SRC_FILES}
 )
Index: code/branches/invaders/src/modules/invader/InvaderPrereqs.h
===================================================================
--- code/branches/invaders/src/modules/invader/InvaderPrereqs.h	(revision 9725)
+++ code/branches/invaders/src/modules/invader/InvaderPrereqs.h	(revision 9744)
@@ -71,4 +71,5 @@
     class InvaderCenterPoint;
     class InvaderShip;
+    class InvaderWeapon;
 }
 
Index: code/branches/invaders/src/modules/invader/InvaderShip.cc
===================================================================
--- code/branches/invaders/src/modules/invader/InvaderShip.cc	(revision 9725)
+++ code/branches/invaders/src/modules/invader/InvaderShip.cc	(revision 9744)
@@ -50,10 +50,16 @@
 
         speed = 500;
+        isFireing = false;
         damping = 10;
+
     }
 
     void InvaderShip::tick(float dt)
     {
-        // If the bat is controlled (but not over the network).
+        // if (camera == NULL)
+        //     camera = this->getCamera();
+        // if (camera != NULL)
+        //     camera->setPosition(Vector3(0, 0, 0) + this->getWorldPosition());
+
         if (this->hasLocalController())
         {
@@ -69,4 +75,8 @@
             ControllableEntity::fire(0);
 
+
+        // camera->setOrientation(Vector3::UNIT_X, Degree(0));
+
+
         SUPER(InvaderShip, tick, dt);
     }
@@ -74,5 +84,5 @@
     void InvaderShip::moveFrontBack(const Vector2& value)
     {
-        orxout(internal_error) << "move backfront" << value.x << value.y << endl;
+        // orxout(internal_error) << "move backfront" << value.x << value.y << endl;
         //velocity.y = value.y * speed * 10;
         lastTimeFront = 0;
@@ -82,5 +92,5 @@
     void InvaderShip::moveRightLeft(const Vector2& value)
     {
-        orxout(internal_error) << "right left front" << value.x << value.y << endl;
+        // orxout(internal_error) << "right left front" << value.x << value.y << endl;
         lastTimeLeft = 0;
         desiredVelocity.x = value.x * speed;
Index: code/branches/invaders/src/modules/invader/InvaderShip.h
===================================================================
--- code/branches/invaders/src/modules/invader/InvaderShip.h	(revision 9725)
+++ code/branches/invaders/src/modules/invader/InvaderShip.h	(revision 9744)
@@ -38,4 +38,5 @@
 
 #include "worldentities/pawns/SpaceShip.h"
+#include "graphics/Camera.h"
 
 namespace orxonox
@@ -59,4 +60,5 @@
             virtual void rotateRoll(const Vector2& value){};
         private:
+            Camera* camera;
             bool isFireing;
             float speed, damping;
Index: code/branches/invaders/src/modules/invader/InvaderWeapon.cc
===================================================================
--- code/branches/invaders/src/modules/invader/InvaderWeapon.cc	(revision 9744)
+++ code/branches/invaders/src/modules/invader/InvaderWeapon.cc	(revision 9744)
@@ -0,0 +1,88 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   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
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      --
+ *
+ */
+
+/**
+    @file InvaderWeapon.h
+    @brief Implementation of the InvaderWeapon class.
+*/
+
+#include "InvaderWeapon.h"
+
+#include "core/CoreIncludes.h"
+// #include "core/XMLPort.h"
+// #include "core/command/Executor.h"
+
+#include "graphics/Model.h"
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/WorldEntity.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Projectile.h"
+#include "weapons/MuzzleFlash.h"
+
+namespace orxonox
+{
+    RegisterClass(InvaderWeapon);
+
+    InvaderWeapon::InvaderWeapon(Context* context) : HsW01(context)
+    {
+        RegisterObject(InvaderWeapon);
+    }
+
+    InvaderWeapon::~InvaderWeapon(){}
+
+    void InvaderWeapon::shot()
+    {
+        // orxout(internal_error) << "shotttttt" << endl;
+
+        assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
+
+        // Create the projectile.
+        Projectile* projectile = new Projectile(this->getContext());
+        Model* model = new Model(projectile->getContext());
+        model->setMeshSource(mesh_);
+        model->setCastShadows(false);
+        projectile->attach(model);
+        model->setScale(5);
+
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+        projectile->setOrientation(Quaternion(sqrt(0.5),0,sqrt(0.5),0)); //this->getMuzzleOrientation()   Quaternion::IDENTITY
+        projectile->setPosition(this->getMuzzlePosition());
+        projectile->setVelocity(Vector3(1, 0, 0) * 2000); //this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_
+
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setDamage(this->getDamage());
+        projectile->setShieldDamage(this->getShieldDamage());
+        projectile->setHealthDamage(this->getHealthDamage());
+
+        // Display the muzzle flash.
+        this->InvaderWeapon::muzzleflash();
+    }
+}
Index: code/branches/invaders/src/modules/invader/InvaderWeapon.h
===================================================================
--- code/branches/invaders/src/modules/invader/InvaderWeapon.h	(revision 9744)
+++ code/branches/invaders/src/modules/invader/InvaderWeapon.h	(revision 9744)
@@ -0,0 +1,62 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   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
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file InvaderWeapon.h
+    @brief Definition of the InvaderWeapon class.
+*/
+
+#ifndef _InvaderWeapon_H__
+#define _InvaderWeapon_H__
+
+#include "weapons/weaponmodes/HsW01.h"
+#include "weapons/WeaponsPrereqs.h"
+
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        Shoots laser beams.
+    @author
+        Hagen Seifert
+    @ingroup WeaponsHsW01s
+    */
+    class _InvaderExport InvaderWeapon : public HsW01
+    {
+        public:
+            InvaderWeapon(Context* context);
+            virtual ~InvaderWeapon();
+        protected:
+            virtual void shot();
+    };
+}
+
+#endif /* _InvaderWeapon_H__ */
