Index: /orxonox/trunk/src/util/animation/animation3d.cc
===================================================================
--- /orxonox/trunk/src/util/animation/animation3d.cc	(revision 3999)
+++ /orxonox/trunk/src/util/animation/animation3d.cc	(revision 4000)
@@ -105,6 +105,6 @@
     {
       tmpKeyFrame = this->keyFrameList->firstElement();
-      this->setAnimFuncMov(animFuncMov);
-      this->setAnimFuncRot(animFuncRot);
+      //this->setAnimFuncMov(animFuncMov);
+      //this->setAnimFuncRot(animFuncRot);
     }
   else
Index: /orxonox/trunk/src/world_entities/player.cc
===================================================================
--- /orxonox/trunk/src/world_entities/player.cc	(revision 3999)
+++ /orxonox/trunk/src/world_entities/player.cc	(revision 4000)
@@ -55,6 +55,6 @@
   Weapon* wpLeft = new TestGun(this, Vector(-2.6, 0.1, -3.0), Quaternion(), 1);
   
-  this->weaponMan->addWeapon(wpRight, W_CONFIG0);
-  this->weaponMan->addWeapon(wpLeft, W_CONFIG1);
+  this->weaponMan->addWeapon(wpRight, W_CONFIG0, W_SLOT0);
+  this->weaponMan->addWeapon(wpLeft, W_CONFIG1, W_SLOT1);
   this->weaponMan->addWeapon(wpRight, W_CONFIG2);
   this->weaponMan->addWeapon(wpLeft, W_CONFIG2);
Index: /orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- /orxonox/trunk/src/world_entities/test_gun.cc	(revision 3999)
+++ /orxonox/trunk/src/world_entities/test_gun.cc	(revision 4000)
@@ -61,8 +61,4 @@
       this->projectileOffset = Vector(1.0, 0.0, -0.35);
 
-      //this->animation1->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR); 
-      //this->animation1->addKeyFrame(Vector(-3.0, 0.1, 3.0), Quaternion(), 0.5, ANIM_LINEAR);
-      //this->animation1->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR);
-
       this->animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
       this->animation1->addKeyFrame(Vector(-0.4, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
@@ -79,8 +75,4 @@
       this->projectileOffset = Vector(1.0, 0.0, 0.5);
 
-      //this->animation1->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.1, ANIM_LINEAR);
-      //this->animation1->addKeyFrame(Vector(-3.0, 0.1, -2.5), Quaternion(), 0.5, ANIM_LINEAR);
-      //this->animation1->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.1, ANIM_LINEAR);
-      
       this->objectComponent1->setRelCoor(Vector(0,0,0.35));
       this->animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
@@ -88,5 +80,4 @@
       this->animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
 
-
       this->animation2->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
       this->animation2->addKeyFrame(Vector(-2.6, 0.1, -3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
@@ -94,7 +85,4 @@
       this->animation3->addKeyFrame(Vector(-2.6, 0.1, -3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
       this->animation3->addKeyFrame(Vector(-2.6, 0.1, -2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT); 
-      //this->animation2->addKeyFrame(Vector(0, 0, 0.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_LINEAR); 
-      //this->animation2->addKeyFrame(Vector(0, 0, 2.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_LINEAR);
-      //this->animation2->addKeyFrame(Vector(0, 0, 0.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_LINEAR);
     }
 
@@ -120,7 +108,4 @@
 void TestGun::activate()
 {
-  if( this->leftRight == W_RIGHT) printf("ACTIVATE right weapon\n");
-  else printf("ACTIVATE left weapon\n");
-  
   this->animation2->replay();
 }
@@ -136,5 +121,4 @@
 void TestGun::deactivate()
 {
-  printf("DEACTIVATE\n");
   this->animation3->replay();
 }
@@ -209,9 +193,4 @@
 void TestGun::draw () 
 {
-  //this->getRelCoor().debug();
-  //this->getAbsCoor().debug();
-  //this->objectComponent1->getRelCoor().debug();
-  //this->objectComponent1->getAbsCoor().debug();
-
   /* draw gun body */
   glMatrixMode(GL_MODELVIEW);
Index: /orxonox/trunk/src/world_entities/weapon.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapon.cc	(revision 3999)
+++ /orxonox/trunk/src/world_entities/weapon.cc	(revision 4000)
@@ -112,20 +112,34 @@
   PRINTF(4)("Changing weapon configuration: from %i to next\n", this->currConfID);
 
-  Weapon* w;
-  for(int i = 0; i < W_MAX_SLOTS; ++i)
-    {
-      w = this->configs[this->currConfID].slots[i];
-      if( w != NULL) w->deactivate();
-    }
-  int i;
+  int i, lastConfID;
+  lastConfID = this->currConfID;
   for(i = this->currConfID + 1; i < W_MAX_CONFIGS && !this->configs[i].bUsed; ++i);
   if( i == W_MAX_CONFIGS) this->currConfID = W_CONFIG0;
   else this->currConfID = i;  
-  PRINTF(4)("\tto %i\n", this->currConfID);
-
-  for(int i = 0; i < W_MAX_SLOTS; ++i)
-    {
-      w = this->configs[this->currConfID].slots[i];
-      if( w != NULL) w->activate();
+
+  
+  Weapon *w1, *w2;
+  for(int j = 0; j < W_MAX_SLOTS; ++j)
+    {
+      w1 = this->configs[lastConfID].slots[j];
+      w2 = this->configs[this->currConfID].slots[j];
+      
+      if( w1 == w2)
+	{
+	  printf("no need for change\n");
+	}
+      else
+	{
+	if( w1 != NULL )
+	  {
+	    w1->deactivate();
+	    printf("deactivating %i,%i\n", j,lastConfID);
+	  }
+	if( w2 != NULL)
+	  {
+	    w2->activate();
+	    printf("activating %i,%i\n", j, this->currConfID);
+	  }
+	}
     }
 }
