Index: /code/branches/fps/data/levels/includes/weaponsettings_fps.oxi
===================================================================
--- /code/branches/fps/data/levels/includes/weaponsettings_fps.oxi	(revision 7051)
+++ /code/branches/fps/data/levels/includes/weaponsettings_fps.oxi	(revision 7052)
@@ -1,5 +1,6 @@
     <weaponslots>
-      <WeaponSlot position="0,-6,0.5" yaw=0 pitch=0 roll=0 />
- <!--     <WeaponSlot position="15,-1.5,-25" yaw=0 pitch=0 roll=0 />
+      <WeaponSlot position="0,0,0" yaw=0 pitch=0 roll=0 />
+ <!--      <WeaponSlot position="-0.5,0.8,2.5" yaw=0 pitch=0 roll=0 />
+      <WeaponSlot position="15,-1.5,-25" yaw=0 pitch=0 roll=0 />
       <WeaponSlot position="0,0,-45" yaw=0 pitch=0 roll=0 /> -->
     </weaponslots>
@@ -16,13 +17,6 @@
         </links>
 	<Weapon>
-          <attached>
-            <Model mesh="LightningGun.mesh" pitch="78" roll="90" yaw="90" position="0,-1.3,0" />
-            <Model mesh="LightningGun-s.mesh" pitch="78" roll="90" yaw="90" position="0.2,-1.3,0" />
-            <Model mesh="hs-w01.mesh" roll="195" position="0,1,0" scale=2 />
-            <Model mesh="hs-w01s.mesh" roll="195" position="0.1,0.5,0" scale=2 />
-          </attached>
-          <HsW01 mode=0 munitionpershot=0 delay=0.125 material="Flares/point_lensflare" muzzleoffset=" 0.7, 1.5,-4" />
-          <HsW01 mode=0 munitionpershot=0 delay=0     material="Flares/point_lensflare" muzzleoffset="-0.9, 1.1,-4" />
-          <LightningGun mode=1 muzzleoffset="0,0,0" />
+	   <HsW01 mode=0 munitionpershot=0 delay=0.0 material="Flares/point_lensflare" muzzleoffset=" 0.7, 1.5, -4" />
+           <LightningGun mode=1 muzzleoffset="0,0,0" />
         </Weapon>
         <LaserGun
Index: /code/branches/fps/data/levels/presentation_FS10.oxw
===================================================================
--- /code/branches/fps/data/levels/presentation_FS10.oxw	(revision 7051)
+++ /code/branches/fps/data/levels/presentation_FS10.oxw	(revision 7052)
@@ -23,5 +23,5 @@
   <Pawn health=100 position="600,35,0" direction="0,-1,0" collisionType=dynamic mass=100000>
       <attached>
-        <Model position="0,0,0" mesh="crate.mesh" scale3D="5,5,5" />
+        <Model position="0,0,0" mesh="fish.mesh" scale3D="5,5,5" />
       </attached>
       <collisionShapes>
@@ -83,4 +83,5 @@
       </collisionShapes>
   </StaticEntity>
+  
 <?lua
 for i = 1, 10, 1
@@ -91,23 +92,5 @@
 ?>
 
-<!--
-<?lua
-for i = 1, 200, 1
-do
-j = math.random()
-?>
 
-    <MovableEntity position="<?lua print(math.random() * 5000-2000) ?>,<?lua print(math.random() * 5000-2000) ?>,<?lua print(math.random() * 5000 - 2000) ?>" collisionType=dynamic linearDamping=0.8 angularDamping=0 mass=<?lua print(j * 100) ?> scale=<?lua print(j * 5) ?> rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>" >
-      <attached>
-        <Model position="0,0,0" scale=<?lua print(j * 10) ?> mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" />
-      </attached>
-      <collisionShapes>
-        <SphereCollisionShape radius="<?lua print(j * 100) ?>" />
-      </collisionShapes>
-    </MovableEntity>
-<?lua
-end
-?>
--->
   </Scene>
 </Level>
Index: /code/branches/fps/data/levels/templates/fps.oxt
===================================================================
--- /code/branches/fps/data/levels/templates/fps.oxt	(revision 7051)
+++ /code/branches/fps/data/levels/templates/fps.oxt	(revision 7052)
@@ -2,6 +2,5 @@
   <FpsPlayer
    hudtemplate            = fpshud
-   camerapositiontemplate = fpscamera
- 
+   
    spawnparticlesource    = "Orxonox/fairytwirl"
    spawnparticleduration  = 3
@@ -21,41 +20,36 @@
    angularDamping    = 0.9999999
    friction	     = 0.01
+   
+   weapon            = "hs-w01.mesh"
   >
- <!--   <attached>
-      <Model position="0,0,0" yaw=90 pitch=-90 roll=0 scale=4 mesh="assff.mesh" />
-      <BlinkingBillboard position="17,-1.5,0" material="Examples/Flare" colour="1.0, 0.5, 0.3" amplitude=0.1 frequency=0.5 quadratic=1 />
-      <BlinkingBillboard position="-17,-1.5,0" material="Examples/Flare" colour="0.5, 1.0, 0.3" amplitude=0.1 frequency=0.5 phase=180 quadratic=1 />
-    </attached>
--->
     <collisionShapes>
-      <BoxCollisionShape position="0,0,0" halfExtents="7,7,7" />
-    <!--
-      <SphereCollisionShape radius="10" />
-      
-      <BoxCollisionShape position="0,0,0"      halfExtents="10, 3, 5" />
-      <BoxCollisionShape position="13,-1.3,0"  halfExtents="3, 1, 2" />
-      <BoxCollisionShape position="-13,-1.3,0" halfExtents="3, 1, 2" />
-      <BoxCollisionShape position="0,0,7"      halfExtents="3, 2, 2" />
-      <BoxCollisionShape position="0,0.1,-11"  halfExtents="2.2, 1.8, 6" />
-      <BoxCollisionShape position="0,0.1,-19"  halfExtents="1.4, 1, 2" />
-    -->
+      <BoxCollisionShape position="0,0,0" halfExtents="8,20,8" />
     </collisionShapes>
+    
+    <camerapositions>
+      <CameraPosition position="-0.5,0.8,2.5" drag=false mouselook=true />
+    </camerapositions>
+    
+    <?lua
+	include("includes/weaponsettings_fps.oxi")
+    ?>
 
-<?lua
-  include("includes/weaponsettings_fps.oxi")
-?>
   </FpsPlayer>
 </Template>
-
+<!--
 <Template name=fpscamera defaults=0>
   <FpsPlayer>
     <camerapositions>
       <CameraPosition position="0,0,20" drag=false mouselook=true />
-      <!--CameraPosition position="0,150,-25" pitch=-90 drag=true />
+      
+      <!--
+      CameraPosition position="0,150,-25" pitch=-90 drag=true />
       <CameraPosition position="0,0,-40" yaw=180 drag=true />
       <CameraPosition position="0,3,-14" yaw=0 />
       <CameraPosition position="-50,5,-8" yaw=-90 drag=true />
-      <CameraPosition position="50,5,-8" yaw=90 drag=true /-->
+      <CameraPosition position="50,5,-8" yaw=90 drag=true /
+      
     </camerapositions>
   </FpsPlayer>
 </Template>
+-->
Index: /code/branches/fps/src/orxonox/worldentities/pawns/FpsPlayer.cc
===================================================================
--- /code/branches/fps/src/orxonox/worldentities/pawns/FpsPlayer.cc	(revision 7051)
+++ /code/branches/fps/src/orxonox/worldentities/pawns/FpsPlayer.cc	(revision 7052)
@@ -33,5 +33,7 @@
 #include <LinearMath/btVector3.h>
 #include <BulletCollision/NarrowPhaseCollision/btManifoldPoint.h>
-
+#include <OgreSceneManager.h>
+#include <OgreSceneNode.h>
+#include <OgreEntity.h>
 
 #include "core/CoreIncludes.h"
@@ -40,4 +42,8 @@
 #include "core/XMLPort.h"
 #include "items/Engine.h"
+#include "Scene.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSlot.h"
+#include "weaponsystem/Weapon.h"
 
 #include <cmath>
@@ -80,8 +86,14 @@
         this->registerVariables();
 
+	this->weaponNode = this->cameraPositionRootNode_;
+	//this->weaponNode = this->getScene()->getRootSceneNode()->createChildSceneNode();
+	//this->weaponNode = this->cameraPositionRootNode_->createChildSceneNode();
+        this->attachNode(this->weaponNode);
     }
 
     FpsPlayer::~FpsPlayer()
     {
+	if (this->isInitialized() && this->mesh_.getEntity())
+            this->detachOgreObject(this->mesh_.getEntity());
     }
 
@@ -93,4 +105,5 @@
         XMLPortParamVariable(FpsPlayer, "auxilaryThrust", auxilaryThrust_, xmlelement, mode);
         XMLPortParamVariable(FpsPlayer, "rotationThrust", rotationThrust_, xmlelement, mode);
+	XMLPortParam(FpsPlayer, "weapon", setMeshSource, getMeshSource, xmlelement, mode);
     }
 
@@ -100,5 +113,8 @@
         registerVariable(this->auxilaryThrust_, VariableDirection::ToClient);
         registerVariable(this->rotationThrust_, VariableDirection::ToClient);
-    }
+	registerVariable(this->weaponmashname);
+    }
+    
+   
 
     void FpsPlayer::setConfigValues()
@@ -145,20 +161,34 @@
             if (!this->isInMouseLook())
             {
-                this->yaw(Radian(this->yaw_ * this->getMouseLookSpeed()),WorldEntity::Parent);
-                //this->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+                this->yaw(Radian(this->yaw_ * this->getMouseLookSpeed()), WorldEntity::Parent);
+		
 		Radian pitch=this->cameraPositionRootNode_->getOrientation().getPitch();
-		if( pitch<Radian(1.5707) && pitch>Radian(-1.5707) ) this->cameraPositionRootNode_->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+		if( pitch<Radian(1.5707) && pitch>Radian(-1.5707) ) {
+			//this->weaponNode->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+			this->cameraPositionRootNode_->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+			}
 		else if(pitch<Radian(-1.5707)){
-			if(this->pitch_>0.0) this->cameraPositionRootNode_->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
-			else if(pitch<Radian(-1.571)) this->cameraPositionRootNode_->pitch(-pitch+Radian(-1.570796));
+			if(this->pitch_>0.0) {
+				//this->weaponNode->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+				this->cameraPositionRootNode_->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+				}
+			else if(pitch<Radian(-1.571)){
+				//this->weaponNode->pitch(-pitch+Radian(-1.570796));
+				this->cameraPositionRootNode_->pitch(-pitch+Radian(-1.570796));
+				}
 		}
 		else if(pitch>Radian(1.5707)){
-			if(this->pitch_<0.0) this->cameraPositionRootNode_->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
-			else if(pitch>Radian(1.571)) this->cameraPositionRootNode_->pitch(-pitch+Radian(1.570796));
+			if(this->pitch_<0.0) {
+				//this->weaponNode->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+				this->cameraPositionRootNode_->pitch(Radian(this->pitch_ * this->getMouseLookSpeed()));
+				}
+			else if(pitch>Radian(1.571)){ 
+				//this->weaponNode->pitch(-pitch+Radian(1.570796));
+				this->cameraPositionRootNode_->pitch(-pitch+Radian(1.570796));
+				}
 		}
-		 
+		//this->weaponNode->setOrientation(this->cameraPositionRootNode_->getOrientation());
 		
- //               this->roll(Radian(this->roll_ * this->getMouseLookSpeed()));
-            }
+	    }
 
             this->yaw_ = this->pitch_ = this->roll_ = 0;
@@ -172,4 +202,20 @@
         SUPER(FpsPlayer, tick, dt);
     }
+    
+    void FpsPlayer::changedMesh()
+    {
+        if (GameMode::showsGraphics())
+        {
+            if (this->mesh_.getEntity())
+                this->weaponNode->detachObject(this->mesh_.getEntity());
+
+            this->mesh_.setMeshSource(this->getScene()->getSceneManager(), this->meshSrc_);
+
+            if (this->mesh_.getEntity())
+            {
+                this->weaponNode->attachObject(this->mesh_.getEntity());
+            }
+        }
+    }
 
     void FpsPlayer::setPlayer(PlayerInfo* player)
@@ -244,3 +290,16 @@
     }
     
+    void FpsPlayer::addedWeaponPack(WeaponPack* wPack)
+    {
+        for (size_t i = 0; i < wPack->getNumWeapons(); ++i)
+	{
+	    Weapon* weapon = wPack->getWeapon(i);
+	    if (weapon->getWeaponSlot())
+	    {
+	        weapon->getWeaponSlot()->removeWeapon();
+	        weapon->detachFromParent();
+		weapon->attachToNode(this->weaponNode);
+	    }
+	}
+    }
 }
Index: /code/branches/fps/src/orxonox/worldentities/pawns/FpsPlayer.h
===================================================================
--- /code/branches/fps/src/orxonox/worldentities/pawns/FpsPlayer.h	(revision 7051)
+++ /code/branches/fps/src/orxonox/worldentities/pawns/FpsPlayer.h	(revision 7052)
@@ -35,4 +35,5 @@
 #include <LinearMath/btVector3.h>
 #include "util/Math.h"
+#include "tools/Mesh.h"
 #include "Pawn.h"
 
@@ -58,4 +59,10 @@
             virtual void rotateRoll(const Vector2& value);
 	    
+	    
+            inline void setMeshSource(const std::string& meshname)
+                { this->meshSrc_ = meshname; this->changedMesh(); }
+            inline const std::string& getMeshSource() const
+                { return this->meshSrc_; }
+	    
 	    void boost();						//acctually jump
 
@@ -63,4 +70,6 @@
 	    
 	    bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
+
+	    virtual void addedWeaponPack(WeaponPack* wPack);
             
         protected:
@@ -75,4 +84,5 @@
             float auxilaryThrust_;
             float rotationThrust_;
+	    std::string weaponmashname;
             btVector3 localLinearAcceleration_;
             btVector3 localAngularAcceleration_;
@@ -82,4 +92,7 @@
             float speed_;
 
+	    void changedMesh();
+	    Mesh mesh_;
+	    std::string meshSrc_;
             float yaw_;
             float pitch_;
@@ -89,4 +102,6 @@
 	    bool thistickboost;
 	    Quaternion savedOrientation_;
+	    Ogre::SceneNode* weaponNode;
+	    Ogre::Camera* camera_;
     };
 }
Index: /code/branches/fps/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- /code/branches/fps/src/orxonox/worldentities/pawns/Pawn.cc	(revision 7051)
+++ /code/branches/fps/src/orxonox/worldentities/pawns/Pawn.cc	(revision 7052)
@@ -331,5 +331,8 @@
     {
         if (this->weaponSystem_)
+	{
             this->weaponSystem_->addWeaponPack(wPack);
+	    this->addedWeaponPack(wPack);
+	}
     }
 
@@ -337,6 +340,10 @@
     {
         if (this->weaponSystem_)
+	{
             if (!this->weaponSystem_->addWeaponPack(wPack))
                 wPack->destroy();
+	    else
+                this->addedWeaponPack(wPack);
+	}
     }
 
Index: /code/branches/fps/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- /code/branches/fps/src/orxonox/worldentities/pawns/Pawn.h	(revision 7051)
+++ /code/branches/fps/src/orxonox/worldentities/pawns/Pawn.h	(revision 7052)
@@ -90,4 +90,6 @@
             void addWeaponPackXML(WeaponPack * wPack);
             WeaponPack * getWeaponPack(unsigned int index) const;
+	    
+	    virtual void addedWeaponPack(WeaponPack* wPack) {}
 
             inline const WorldEntity* getWorldEntity() const
