Index: /branches/hud/src/world_entities/creatures/fps_player.cc
===================================================================
--- /branches/hud/src/world_entities/creatures/fps_player.cc	(revision 10653)
+++ /branches/hud/src/world_entities/creatures/fps_player.cc	(revision 10654)
@@ -96,4 +96,8 @@
   this->bPosBut = false;
   this->bFire = false;
+  this->bFire2 = false;
+  this->changeZoom = true;
+  this->inZoomMode = false;
+  this->changingZoom = false;
 
   this->xMouse = 0.0f;
@@ -117,4 +121,5 @@
   registerEvent(KeyMapper::PEV_RIGHT);
   registerEvent(KeyMapper::PEV_FIRE1);
+  registerEvent(KeyMapper::PEV_FIRE2);
   registerEvent(KeyMapper::PEV_JUMP);
   registerEvent(KeyMapper::PEV_CROUCH);
@@ -204,4 +209,5 @@
   this->xMouse = 0.0f;
   this->yMouse = 0.0f;
+  this->inZoomMode = false;
 
   this->setHealth(80);
@@ -249,5 +255,5 @@
 void FPSPlayer::tick (float time)
 {
-
+     // Second init-step
   if ( !this->initWeapon )
   {
@@ -271,18 +277,74 @@
     }
 
-
-    AABB* box = this->getModelAABB();
-    if( box != NULL)
-    {
+  }
+  // end of second init-step
+  
+  // This box represents the dimension of the used model
+  AABB* box = this->getModelAABB();
+
+  if( box != NULL)
+  {
       float f = 1.0;
+      if( this->bCrouch )
+          f = 0.3*f;
+      
       this->cameraNode.setRelCoor(0, box->halfLength[1] * f, 0);
-//       this->cameraNode.setRelCoor(10, box->halfLength[1] * f, 0);
-
-      float v = 0.1f;
-      this->getWeaponManager().setSlotPosition(0, Vector(-8.0, box->halfLength[1] * v, 1.1));
-      this->getWeaponManager().setSlotPosition(1, Vector(5.0, box->halfLength[1] * v, 0.0));
-    }
-  }
-
+//      this->cameraNode.setRelCoor(10, box->halfLength[1] * f, 0);
+     float v = 0.1f;
+     this->getWeaponManager().setSlotPosition(0, Vector(-8.0, box->halfLength[1] * v, 1.1));
+     this->getWeaponManager().setSlotPosition(1, Vector(5.0, box->halfLength[1] * v, 0.0));
+  }
+  
+  /*
+  if( this->bFire2 )
+  {
+      
+      // to change Zoom on click
+      if( this->changeZoom )
+      {
+          this->changeZoom = false;
+          if( this->inZoomMode )
+          {
+              State::getCamera()->setViewMode(Camera::ViewFPS);
+              this->inZoomMode = false;
+          }
+          else
+          {
+              State::getCamera()->setViewMode(Camera::ViewFPSZoom);
+              this->inZoomMode = true;
+          }
+          
+      }
+      
+  }
+  else
+  {
+      this->changeZoom = true;
+  }*/
+  if( this->bFire2 )
+  {
+      if( this->changeZoom )
+      {
+          if( !this->inZoomMode || this->changingZoom )
+          {
+              this->inZoomMode = true;
+              this->changingZoom = true;
+              float fovy = State::getCamera()->getFovy();
+              if( fovy > 30 )
+                  State::getCamera()->setFovy( fovy - 10*time );
+          }
+          else
+          {
+                State::getCamera()->setViewMode(Camera::ViewFPS);
+                this->inZoomMode = false;
+                this->changeZoom = false;
+          }
+      }
+  }
+  else
+  {
+      this->changeZoom = true;
+      this->changingZoom = false;
+  }
 
   this->getWeaponManager().tick(time);
@@ -322,7 +384,14 @@
     xMouse *= time ;
     yMouse *= time ;
-
-    heading -= xMouse/5.;
-    attitude-= yMouse/5.;
+    
+    float amount;
+    
+    if( this->inZoomMode )
+        amount = 2.;
+    else
+        amount = 5.;
+
+    heading -= xMouse/amount;
+    attitude-= yMouse/amount;
 
 
@@ -367,6 +436,10 @@
     }*/
 
-
-  velocity *= 100;
+  int speed;
+  if( this->bCrouch )
+      speed = 50;
+  else
+      speed = 100;
+  velocity *= speed;
 
   if( this->getModel( 0) != NULL && this->getModel(0)->isA(InteractiveModel::staticClassID()))
@@ -461,4 +534,5 @@
   if( this->aimingSystem != NULL)
     this->aimingSystem->flushList();
+    
 }
 
@@ -496,4 +570,6 @@
   else if( event.type == KeyMapper::PEV_FIRE1)
     this->bFire = event.bPressed;
+  else if( event.type == KeyMapper::PEV_FIRE2)
+    this->bFire2 = event.bPressed;
   else if( event.type == KeyMapper::PEV_CROUCH)
     this->bCrouch = event.bPressed;
Index: /branches/hud/src/world_entities/creatures/fps_player.h
===================================================================
--- /branches/hud/src/world_entities/creatures/fps_player.h	(revision 10653)
+++ /branches/hud/src/world_entities/creatures/fps_player.h	(revision 10654)
@@ -50,4 +50,5 @@
     bool                  bPosBut;           //!< position button
     bool                  bFire;             //!< fire button
+    bool                  bFire2;            //!< alternate fire button
     bool                  bCrouch;           //!< crouch button
 
@@ -65,4 +66,7 @@
 
     bool                  initWeapon;
+    bool                  changeZoom;        //!< zoom sight of player
+    bool                  inZoomMode;        //!< zoomsight
+    bool                  changingZoom;
 
     AimingSystem*         aimingSystem;      //!< aiming system of the player
Index: /branches/hud/src/world_entities/tools/camera.cc
===================================================================
--- /branches/hud/src/world_entities/tools/camera.cc	(revision 10653)
+++ /branches/hud/src/world_entities/tools/camera.cc	(revision 10654)
@@ -211,4 +211,12 @@
       this->setRelCoorSoft(this->viewFrontDistance, 0, 0, 5);
       this->target->setRelCoorSoft(Vector(10,0,0), 5);
+      break;
+    }
+    case Camera::ViewFPSZoom:
+    {
+      this->fovy = viewNormalFovy;
+      this->toFovy = 30;
+      this->setRelCoorSoft(2, 0, 0, 5);
+      this->target->setRelCoorSoft(Vector(10,0,0), 5);
     }
   }
Index: /branches/hud/src/world_entities/tools/camera.h
===================================================================
--- /branches/hud/src/world_entities/tools/camera.h	(revision 10653)
+++ /branches/hud/src/world_entities/tools/camera.h	(revision 10654)
@@ -35,5 +35,6 @@
     ViewRight,
     ViewTop,
-    ViewFPS
+    ViewFPS,
+    ViewFPSZoom
   };
   public:
