Index: /code/branches/weapon2/src/orxonox/CMakeLists.txt
===================================================================
--- /code/branches/weapon2/src/orxonox/CMakeLists.txt	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/CMakeLists.txt	(revision 2186)
@@ -90,4 +90,9 @@
   objects/weaponSystem/Weapon.cc
   objects/weaponSystem/Munition.cc
+  objects/weaponSystem/weapons/LaserGun.cc
+  objects/weaponSystem/munitions/LaserGunMunition.cc
+  objects/weaponSystem/projectiles/BillboardProjectile.cc
+  objects/weaponSystem/projectiles/ParticleProjectile.cc
+  objects/weaponSystem/projectiles/Projectile.cc
 
   objects/worldentities/triggers/Trigger.cc
Index: /code/branches/weapon2/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- /code/branches/weapon2/src/orxonox/OrxonoxPrereqs.h	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/OrxonoxPrereqs.h	(revision 2186)
@@ -133,4 +133,6 @@
     class Weapon;
     class Munition;
+    class LaserGun;
+    class LaserGunMunition;
 
     class EventListener;
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.cc
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.cc	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.cc	(revision 2186)
@@ -42,5 +42,7 @@
         RegisterObject(Weapon);
         this->weaponReadyToShoot_ = true;
-        //this->setParentWeaponSystem();
+        this->setParentWeaponSystem();
+        this->pointerToMunition_ = this->parentWeaponSystem_->getAttachedMunitionPointer;
+        this->attachNeededMunition(this->pointerToMunition_);
 
     }
@@ -66,8 +68,17 @@
     }
 
-    void Weapon::attachNeededMunition(Munition *PointerToMunition)
+    void attachNeededMunition(Munition *pointerToMunition)
     {
+        //if munition type already exist attach it, else create a new one of this type and attach it to the weapon and to the WeaponSystem
+        if ( this->parentWeaponSystem_->munitionSet_[laserGunMunition] )
+            this->pointerToMunition_ = pointerToMunition;
+        else
+        {
+            this->pointerToMunition_ = new LaserGunMunition;
+            this->parentWeaponSystem_->munitionSet_[laserGunMunition] = this->pointerToMunition_;
 
+        }
     }
+
 /*
     void Weapon::setParentWeaponSystem()
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.h
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/Weapon.h	(revision 2186)
@@ -48,5 +48,6 @@
             virtual void fire();
             void reloaded();
-            virtual void attachNeededMunition(Munition *PointerToMunition);
+            virtual void setParentWeaponSystem();
+            void attachNeededMunition(Munition *munitionPointer);
 
             inline void setParentWeaponSlot(WeaponSlot *parentWeaponSlot)
@@ -55,5 +56,6 @@
                 { return parentWeaponSlot_; };
 
-            //void setParentWeaponSystem();
+
+
 
         private:
@@ -62,5 +64,5 @@
             Munition *pointerToMunition_;
             WeaponSlot *parentWeaponSlot_;
-            //WeaponSystem *parentWeaponSystem_;
+            WeaponSystem *parentWeaponSystem_;
             Timer<Weapon> reloadTimer_;
 
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSlot.h
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSlot.h	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSlot.h	(revision 2186)
@@ -63,4 +63,9 @@
 
             WeaponSet *parentWeaponSet_;
+
+            //attached weapon orientation
+            int yaw_ = 0;
+            int pitch_ = 0;
+            int roll_ = 0;
     };
 }
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc	(revision 2186)
@@ -52,5 +52,5 @@
         this->activeWeaponSet_ = 0;
         this->parentSpaceShip_ = 0;
-        //this->attachedMunition_ =0;
+        this->attachedMunition_ =0;
     }
 
@@ -80,5 +80,5 @@
     void WeaponSystem::fire(WeaponMode::Enum n)
     {
-        if (n < this->weaponSets_.size())
+        if (n < (int)this->weaponSets_.size())
             this->weaponSets_[n]->fire();
     }
@@ -98,5 +98,9 @@
     }
 
-    /*
+    Munition * WeaponSystem::getAttachedMunitionPointer()
+    {
+        return this->attachedMunition_;
+    }
+
     void WeaponSystem::addMunitionType(Munition *munitionPointer)
     {
@@ -106,8 +110,8 @@
             this->attachedMunition_ = munitionPointer;
         else
-            this->unlimitedAmmo_ = true;
+            ;//was?
 
     }
-    */
+
 
 }
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.h
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.h	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.h	(revision 2186)
@@ -43,5 +43,5 @@
     {
         enum Enum
-        { LaserGunMunition };
+        { laserGunMunition };
     }
 
@@ -68,4 +68,5 @@
             //void setActiveWeaponSet(unsigned int n);
             WeaponSet * getWeaponSetPointer(unsigned int n);
+            Munition * getAttachedMunitionPointer();
 
             inline void setParentSpaceShip(SpaceShip *parentSpaceShip)
@@ -80,4 +81,5 @@
             WeaponSet *activeWeaponSet_;
             SpaceShip *parentSpaceShip_;
+            Munition * attachedMunition_;
     };
 }
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc	(revision 2186)
@@ -37,5 +37,5 @@
 namespace orxonox
 {
-    LaserGunMunition::LaserGunMunition(BaseObject* creator) : BaseObject(creator)
+    LaserGunMunition::LaserGunMunition(BaseObject* creator) : Munition(creator)
     {
         RegisterObject(LaserGunMunition);
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.h
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.h	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.h	(revision 2186)
@@ -33,5 +33,5 @@
 
 #include "core/BaseObject.h"
-
+#include "../Munition.h"
 
 namespace orxonox
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc	(revision 2186)
@@ -34,4 +34,6 @@
 #include "util/Debug.h"
 
+#include "LaserGun.h"
+
 
 namespace orxonox
@@ -41,8 +43,5 @@
         RegisterObject(LaserGun);
 
-        this->attachNeededMunition();
-
         //set weapon properties here
-        this->projectileColor_ = ColourValue(1.0, 1.0, 0.5)
         this->loadingTime_ = 0.5;
     }
@@ -76,19 +75,3 @@
     }
 
-    ColorValue LaserGun::getProjectileColor()
-    {
-        return projectileColor_;
-    }
-
-    void attachNeededMunition(Munition *pointerToMunition)
-    {
-        //if munition type already exist attach it, else create a new one of this type and attach it to the weapon and to the WeaponSystem
-        if ( this->parentWeaponSystem_->munitionSet_[laserGunMunition] )
-            this->pointerToMunition_ = pointerToMunition;
-        else
-        {
-            this->pointerToMunition_ = new LaserGunMunition;
-
-        }
-    }
 }
Index: /code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.h
===================================================================
--- /code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.h	(revision 2185)
+++ /code/branches/weapon2/src/orxonox/objects/weaponSystem/weapons/LaserGun.h	(revision 2186)
@@ -34,6 +34,7 @@
 #include "core/BaseObject.h"
 
-#include "LaserGunMunition.h"
+#include "../munitions/LaserGunMunition.h"
 #include "util/Math.h"
+#include "../Weapon.h"
 
 namespace orxonox
@@ -48,8 +49,8 @@
 
             void fire();
-            ColourValue LaserGun::getProjectileColour();
+
 
         private:
-            ColorValue projectileColor_;
+
 
     };
