Index: orxonox/trunk/src/animation3d.cc
===================================================================
--- orxonox/trunk/src/animation3d.cc	(revision 3854)
+++ orxonox/trunk/src/animation3d.cc	(revision 3855)
@@ -20,11 +20,11 @@
 #include "animation3d.h"
 
-#include "stdincl.h"
-#include "vector.h"
 #include "p_node.h"
 
 using namespace std;
 
-
+/**
+   \brief standard constructor
+*/
 Animation3D::Animation3D(PNode* object)
 {
@@ -44,4 +44,9 @@
 }
 
+/**
+   \brief standard deconstructor
+   
+   deletes all the Keyframes
+*/
 Animation3D::~Animation3D(void)
 {
@@ -58,5 +63,7 @@
 }
 
-
+/**
+   \brief rewinds the Animation to the beginning (first KeyFrame and time == 0)
+*/
 void Animation3D::rewind(void)
 {
@@ -66,6 +73,12 @@
 }
 
-
-void Animation3D::addKeyFrame(Vector position, Quaternion direction, float duration = 1.0, ANIM_FUNCTION animFunc)
+/**
+   \brief Appends a new Keyframe
+   \param position The position of the new Keyframe
+   \param direction The direction of the new Keyframe.
+   \param duration The duration from the new KeyFrame to the next one
+   \param animFunc The function to animate between this keyFrame and the next one
+*/
+void Animation3D::addKeyFrame(Vector position, Quaternion direction, float duration, ANIM_FUNCTION animFunc)
 {
   // some small check
@@ -97,4 +110,8 @@
 }
 
+/**
+   \brief ticks the Animation
+   \param dt how much time to tick
+*/
 void Animation3D::tick(float dt)
 {
@@ -171,5 +188,8 @@
 
 
-
+/**
+   \brief Sets The kind of Animation between this keyframe and the next one
+   \param animFunc The Type of Animation to set
+*/
 void Animation3D::setAnimFunc(ANIM_FUNCTION animFunc)
 {
@@ -204,4 +224,8 @@
 }
 
+/**
+   \brief stays at the value of the currentKeyFrame
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::constant(float timePassed) const
 {
@@ -216,4 +240,8 @@
 }
 
+/**
+   \brief linear interpolation between this keyframe and the next one
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::linear(float timePassed) const
 {
@@ -223,4 +251,8 @@
 }
 
+/**
+   \brief a Sinusodial Interpolation between this keyframe and the next one
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::sine(float timePassed) const
 {
@@ -228,4 +260,8 @@
 }
 
+/**
+   \brief a cosine interpolation between this keyframe and the next one
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::cosine(float timePassed) const
 {
@@ -233,4 +269,8 @@
 }
 
+/**
+   \brief an exponential interpolation between this keyframe and the next one
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::exp(float timePassed) const
 {
@@ -238,9 +278,17 @@
 }
 
+/**
+   \brief a negative exponential interpolation between this keyframe and the next one
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::negExp(float timePassed) const
 {
-
-}
-
+  this->linear(timePassed);
+}
+
+/**
+   \brief a quadratic interpolation between this keyframe and the next one
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::quadratic(float timePassed) const
 {
@@ -248,4 +296,8 @@
 }
 
+/**
+   \brief some random animation (fluctuating)
+   \param timePassed The time passed since this Keyframe began
+*/
 void Animation3D::random(float timePassed) const
 {
Index: orxonox/trunk/src/animation3d.h
===================================================================
--- orxonox/trunk/src/animation3d.h	(revision 3854)
+++ orxonox/trunk/src/animation3d.h	(revision 3855)
@@ -13,8 +13,8 @@
 */
 typedef struct KeyFrame3D {
-  float duration;
-  Vector position;
-  Quaternion direction;
-  ANIM_FUNCTION animFunc;
+  float duration;                   //!< The duration of this KeyFrame
+  Vector position;                  //!< The position of this KeyFrame
+  Quaternion direction;             //!< The direction of this KeyFrame
+  ANIM_FUNCTION animFunc;           //!< with whitch function to iterate to the next KeyFrame3D
 };
 
@@ -32,5 +32,5 @@
 
   void addKeyFrame(Vector position, Quaternion direction, float time, ANIM_FUNCTION animFunc = ANIM_LINEAR);
-  void addKeyFrame(KeyFrame3D* frame);
+  //  void addKeyFrame(KeyFrame3D* frame);
 
   virtual void tick(float dt);
@@ -49,13 +49,14 @@
   void random(float timePassed) const;
   //  ANIM_FUNCTION animFunc;
-  KeyFrame3D* currentKeyFrame;
-  KeyFrame3D* nextKeyFrame;
-  tList<KeyFrame3D>* keyFrameList;
-  void (Animation3D::*animFunc)(float) const;
+  void (Animation3D::*animFunc)(float) const;      //!< A Function for the AnimationType
+
+  KeyFrame3D* currentKeyFrame;                     //!< The current KeyFrame
+  KeyFrame3D* nextKeyFrame;                        //!< The KeyFrame we iterate to
+  tList<KeyFrame3D>* keyFrameList;                 //!< The KeyFrameList
 
   // more class-local description
-  PNode* object;
-  Vector lastPosition;
-  Vector tmpVect;
-  float deltaT;
+  PNode* object;                                   //!< The Object from which to Animate something
+  Vector lastPosition;   //!< ??
+  Vector tmpVect;        //!< what for??
+  float deltaT;          //!< ??
 };
Index: orxonox/trunk/src/t_animation.h
===================================================================
--- orxonox/trunk/src/t_animation.h	(revision 3854)
+++ orxonox/trunk/src/t_animation.h	(revision 3855)
@@ -54,4 +54,5 @@
   //  ANIM_FUNCTION animFunc;
   float (tAnimation<T>::*animFunc)(float) const;  //!< A Function for the AnimationType
+
   KeyFrameF* currentKeyFrame;                     //!< The current KeyFrame
   KeyFrameF* nextKeyFrame;                        //!< The KeyFrame we iterate to
@@ -247,15 +248,4 @@
 
 // animation functions
-
-/**
-   \brief some random animation (fluctuating)
-   \param timePassed The time passed since this Keyframe began
-*/
-template<class T>
-float tAnimation<T>::random(float timePassed) const
-{
-  return this->currentKeyFrame->value * (float)rand()/(float)RAND_MAX;
-}
-
 /**
    \brief stays at the value of the currentKeyFrame
@@ -345,4 +335,13 @@
 }
 
+/**
+   \brief some random animation (fluctuating)
+   \param timePassed The time passed since this Keyframe began
+*/
+template<class T>
+float tAnimation<T>::random(float timePassed) const
+{
+  return this->currentKeyFrame->value * (float)rand()/(float)RAND_MAX;
+}
 
 #endif /* _T_ANIMATION_H */
Index: orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.cc	(revision 3854)
+++ orxonox/trunk/src/world_entities/test_gun.cc	(revision 3855)
@@ -54,26 +54,35 @@
 
   this->dummy1 = new WorldEntity(); // a world entity that is not drawed: use this for the weapon 
-  this->animaton = new Animation3D(dummy1);
-
+  this->animation = new Animation3D(dummy1);
+
+  parent->addChild(this->dummy1, PNODE_ALL);
+
+  this->animation->setInfinity(ANIM_INF_CONSTANT);
+  // ANIM_LINEAR was ANIM_NEG_EXP
+  if( this->leftRight == 0)
+    {
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR); 
+      this->animation->addKeyFrame(Vector(-3.0, 0.1, 3.0), Quaternion(), 0.5, ANIM_LINEAR);
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.1, ANIM_LINEAR);
+    }
+  else if( this->leftRight == 1)
+    {
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.1, ANIM_LINEAR);
+      this->animation->addKeyFrame(Vector(-3.0, 0.1, -2.5), Quaternion(), 0.5, ANIM_LINEAR);
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.1, ANIM_LINEAR);
+    }
   /*
-  parent->addChild(this->dummy1, PNODE_ALL);
-
-  
-  this->animator->animatorBegin();
-  this->animator->selectObject(this->dummy1);
-  this->animator->setAnimationMode(SINGLE);
-  if( this->leftRight == 0)
-    {
-      this->animator->addKeyFrame(new Vector(-2.6, 0.1, 3.0), new Quaternion(), 0.0, NEG_EXP);
-      this->animator->addKeyFrame(new Vector(-3.0, 0.1, 3.0), new Quaternion(), 0.1, NEG_EXP);
-      this->animator->addKeyFrame(new Vector(-2.6, 0.1, 3.0), new Quaternion(), 0.5, NEG_EXP);
-    }
-  else if( this->leftRight == 1)
-    {
-      this->animator->addKeyFrame(new Vector(-2.6, 0.1, -2.5), new Quaternion(), 0.0, NEG_EXP);
-      this->animator->addKeyFrame(new Vector(-3.0, 0.1, -2.5), new Quaternion(), 0.1, NEG_EXP);
-      this->animator->addKeyFrame(new Vector(-2.6, 0.1, -2.5), new Quaternion(), 0.5, NEG_EXP);
-    }
-  this->animator->animatorEnd();
+  if( this->leftRight == 0)
+    {
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.0, ANIM_NEG_EXP); 
+      this->animation->addKeyFrame(Vector(-3.0, 0.1, 3.0), Quaternion(), 0.1, ANIM_NEG_EXP);
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, 3.0), Quaternion(), 0.5, ANIM_NEG_EXP);
+    }
+  else if( this->leftRight == 1)
+    {
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.0, ANIM_NEG_EXP);
+      this->animation->addKeyFrame(Vector(-3.0, 0.1, -2.5), Quaternion(), 0.1, ANIM_NEG_EXP);
+      this->animation->addKeyFrame(Vector(-2.6, 0.1, -2.5), Quaternion(), 0.5, ANIM_NEG_EXP);
+    }
   */
 }
@@ -134,10 +143,5 @@
   this->localTime = 0;
   
-  /*
-    this->animator->animatorBegin();
-    this->animator->selectObject(this->dummy1);
-    this->animator->start();
-    this->animator->animatorEnd();
-  */
+  this->animation->replay();
 }
 
Index: orxonox/trunk/src/world_entities/test_gun.h
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.h	(revision 3854)
+++ orxonox/trunk/src/world_entities/test_gun.h	(revision 3855)
@@ -52,5 +52,5 @@
 
  private:
-  Animation3D* animaton;
+  Animation3D* animation;
   Vector* projOffset;
   WorldEntity* dummy1;
