Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 3979)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 3980)
@@ -477,7 +477,7 @@
 	    animation->setInfinity(ANIM_INF_REPLAY);
 
-	    animation->addKeyFrame(Vector(0, 0, 0), Quaternion(0, Vector(0,1,0)), 1.0, ANIM_LINEAR, ANIM_NEG_EXP); 
-	    animation->addKeyFrame(Vector(0, 2, 0), Quaternion(M_PI, Vector(0,1,0)), 1.0, ANIM_LINEAR, ANIM_NEG_EXP); 
-	    animation->addKeyFrame(Vector(0, 0, 0), Quaternion(0, Vector(0,1,0)), 1.0, ANIM_LINEAR, ANIM_NEG_EXP); 
+	    animation->addKeyFrame(Vector(0, 0, 0), Quaternion(0, Vector(0,1,0)), 1.0, ANIM_LINEAR, ANIM_SINE); 
+	    animation->addKeyFrame(Vector(0, 2, 0), Quaternion(M_PI, Vector(0,1,0)), 1.0, ANIM_LINEAR, ANIM_SINE); 
+	    animation->addKeyFrame(Vector(0, 0, 0), Quaternion(0, Vector(0,1,0)), 1.0, ANIM_LINEAR, ANIM_SINE); 
 
 	    //animation->addKeyFrame(Vector(0, 0, 0), Quaternion(), 1.0, ANIM_LINEAR); 
Index: /orxonox/trunk/src/util/animation/animation3d.cc
===================================================================
--- /orxonox/trunk/src/util/animation/animation3d.cc	(revision 3979)
+++ /orxonox/trunk/src/util/animation/animation3d.cc	(revision 3980)
@@ -15,4 +15,6 @@
    2005-04-17: Benjamin Grauer
           Rewritte all functions, so it will fit into the Animation-class
+   2005-04-25: Patrick Boenzli
+          Extended the framework to support quatSlerp rotations. Each frame now supports diff mov/rot types. Implemented mov/rot functions
 */
 
@@ -220,9 +222,4 @@
 			  (this->nextKeyFrame->position - this->currentKeyFrame->position) * 
 			  (timePassed/this->currentKeyFrame->duration));
-
-  this->object->setRelDir(quatSlerp( this->nextKeyFrame->direction, 
-				     this->currentKeyFrame->direction, 
-				     timePassed/this->currentKeyFrame->duration) );
-
 }
 
@@ -411,5 +408,5 @@
 void Animation3D::rExp(float timePassed) const
 {
-
+  PRINTF(0)("exp rotation function not implemented\n");
 }
 
@@ -435,4 +432,5 @@
 void Animation3D::rQuadratic(float timePassed) const
 {
+  PRINTF(0)("quadratic rotation alg not implemented\n");
 }
 
@@ -443,3 +441,4 @@
 void Animation3D::rRandom(float timePassed) const
 {
-}
+  PRINTF(0)("random rotation alg not implemented\n");
+}
Index: /orxonox/trunk/src/world_entities/player.cc
===================================================================
--- /orxonox/trunk/src/world_entities/player.cc	(revision 3979)
+++ /orxonox/trunk/src/world_entities/player.cc	(revision 3980)
@@ -52,5 +52,5 @@
   //weapons:
   this->weaponMan = new WeaponManager();
-  Weapon* wpRight = new TestGun(this,Vector(-2.6, 0.1, 3.0), Quaternion(), 0);
+  Weapon* wpRight = new TestGun(this, Vector(-2.6, 0.1, 3.0), Quaternion(), 0);
   Weapon* wpLeft = new TestGun(this, Vector(-2.6, 0.1, -3.0), Quaternion(), 1);
   
Index: /orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- /orxonox/trunk/src/world_entities/test_gun.cc	(revision 3979)
+++ /orxonox/trunk/src/world_entities/test_gun.cc	(revision 3980)
@@ -49,8 +49,9 @@
   this->objectComponent1 = new PNode();
   this->animation1 = new Animation3D(this->objectComponent1);
+  //this->animation2 = new Animation3D(this);
   parent->addChild(this->objectComponent1, PNODE_ALL);
 
   this->animation1->setInfinity(ANIM_INF_CONSTANT);
-  // ANIM_LINEAR was ANIM_NEG_EXP
+  //this->animation2->setInfinity(ANIM_INF_CONSTANT);
   if( this->leftRight == W_LEFT)
     {
@@ -60,4 +61,7 @@
       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->animation2->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_LINEAR); 
+      //this->animation2->addKeyFrame(Vector(-2.6, 0.1, 1.0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_LINEAR);
     }
   else if( this->leftRight == W_RIGHT)
@@ -65,7 +69,7 @@
       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->animation1->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.1, ANIM_NEG_EXP);
+      this->animation1->addKeyFrame(Vector(-3.0, 0.1, -2.5), Quaternion(), 0.5, ANIM_NEG_EXP);
+      this->animation1->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.1, ANIM_NEG_EXP);
     }
 }
@@ -89,5 +93,8 @@
 */
 void TestGun::activate()
-{}
+{
+  printf("ACTIVATE \n");
+  this->animation2->replay();
+}
 
 
@@ -100,5 +107,7 @@
 */
 void TestGun::deactivate()
-{}
+{
+  printf("DEACTIVATE\n");
+}
 
 
