Index: branches/christmas_branche/src/lib/graphics/importer/md2Model.cc
===================================================================
--- branches/christmas_branche/src/lib/graphics/importer/md2Model.cc	(revision 6198)
+++ branches/christmas_branche/src/lib/graphics/importer/md2Model.cc	(revision 6199)
@@ -50,26 +50,26 @@
 sAnim MD2Model::animationList[21] =
   {
- // begin, end, fps
-    {   0,  39,  9 },   //!< STAND
-    {  40,  45, 10 },   //!< RUN
-    {  46,  53, 10 },   //!< ATTACK
-    {  54,  57,  7 },   //!< PAIN_A
-    {  58,  61,  7 },   //!< PAIN_B
-    {  62,  65,  7 },   //!< PAIN_C
-    {  66,  71,  7 },   //!< JUMP
-    {  72,  83,  7 },   //!< FLIP
-    {  84,  94,  7 },   //!< SALUTE
-    {  95, 111, 10 },   //!< FALLBACK
-    { 112, 122,  7 },   //!< WAVE
-    { 123, 134,  6 },   //!< POINTT
-    { 135, 153, 10 },   //!< CROUCH_STAND
-    { 154, 159,  7 },   //!< CROUCH_WALK
-    { 160, 168, 10 },   //!< CROUCH_ATTACK
-    { 196, 172,  7 },   //!< CROUCH_PAIN
-    { 173, 177,  5 },   //!< CROUCH_DEATH
-    { 178, 183,  7 },   //!< DEATH_FALLBACK
-    { 184, 189,  7 },   //!< DEATH_FALLFORWARD
-    { 190, 197,  7 },   //!< DEATH_FALLBACKSLOW
-    { 198, 198,  5 },   //!< BOOM
+ // begin, end, fps, stoppable
+    {   0,  39,  9, 1 },   //!< STAND
+    {  40,  45, 10, 1 },   //!< RUN
+    {  46,  53, 10, 1 },   //!< ATTACK
+    {  54,  57,  7, 1 },   //!< PAIN_A
+    {  58,  61,  7, 1 },   //!< PAIN_B
+    {  62,  65,  7, 1 },   //!< PAIN_C
+    {  66,  71,  7, 0 },   //!< JUMP
+    {  72,  83,  7, 1 },   //!< FLIP
+    {  84,  94,  7, 1 },   //!< SALUTE
+    {  95, 111, 10, 1 },   //!< FALLBACK
+    { 112, 122,  7, 1 },   //!< WAVE
+    { 123, 134,  6, 1 },   //!< POINTT
+    { 135, 153, 10, 1 },   //!< CROUCH_STAND
+    { 154, 159,  7, 1 },   //!< CROUCH_WALK
+    { 160, 168, 10, 1 },   //!< CROUCH_ATTACK
+    { 196, 172,  7, 1 },   //!< CROUCH_PAIN
+    { 173, 177,  5, 0 },   //!< CROUCH_DEATH
+    { 178, 183,  7, 0 },   //!< DEATH_FALLBACK
+    { 184, 189,  7, 0 },   //!< DEATH_FALLFORWARD
+    { 190, 197,  7, 0 },   //!< DEATH_FALLBACKSLOW
+    { 198, 198,  5, 1 },   //!< BOOM
   };
 
@@ -91,4 +91,7 @@
 
   this->scaleFactor = this->data->scaleFactor;
+
+  /* set the animation stat mannualy */
+  this->animationState.type = STAND;
   this->setAnim(STAND);
 
@@ -141,4 +144,10 @@
   if( (type < 0) || (type > MAX_ANIMATIONS) )
     type = STAND;
+
+  if( MD2Model::animationList[this->animationState.type].bStoppable == 0)
+  {
+    if( this->animationState.numPlays == 0 )
+      return;
+  }
 
   this->animationState.startFrame = animationList[type].firstFrame;
@@ -147,4 +156,5 @@
   this->animationState.fps = animationList[type].fps;
   this->animationState.type = type;
+  this->animationState.numPlays = 0;
 
   this->animationState.interpolationState = 0.0f;
@@ -161,7 +171,5 @@
 void MD2Model::tick(float time)
 {
-  this->animationState.localTime += time;
-
-  this->animate();
+  this->animate(time);
   this->processLighting();
   this->interpolate(/*verticesList*/);
@@ -223,7 +231,4 @@
   glPopAttrib();
 }
-
-
-
 
 
@@ -271,6 +276,4 @@
 
 
-
-
 /**
   \brief animates the current model
@@ -278,6 +281,8 @@
   depending on the time passed (tick function), the player will select another model
 */
-void MD2Model::animate()
-{
+void MD2Model::animate(float time)
+{
+  this->animationState.localTime += time;
+
   if( this->animationState.localTime - this->animationState.lastTime > (1.0f / this->animationState.fps))
     {
@@ -286,5 +291,8 @@
 
       if( this->animationState.nextFrame > this->animationState.endFrame)
+      {
         this->animationState.nextFrame = this->animationState.startFrame;
+        this->animationState.numPlays++;
+      }
       this->animationState.lastTime = this->animationState.localTime;
     }
Index: branches/christmas_branche/src/lib/graphics/importer/md2Model.h
===================================================================
--- branches/christmas_branche/src/lib/graphics/importer/md2Model.h	(revision 6198)
+++ branches/christmas_branche/src/lib/graphics/importer/md2Model.h	(revision 6199)
@@ -116,4 +116,5 @@
   int              lastFrame;            //!< last frame of the animation
   int              fps;                  //!< speed: number of frames per second
+  int              bStoppable;           //!< 1 if the animation is stoppable 0 else
 } sAnim;
 
@@ -134,4 +135,5 @@
   int              currentFrame;         //!< the current frame
   int              nextFrame;            //!< the next frame in the list
+  int              numPlays;             //!< the number of times, this has been played in series
 } sAnimState;
 
@@ -228,5 +230,5 @@
 
 private:
-  void animate();
+  void animate(float time);
   void processLighting();
   void interpolate(/*sVec3D* verticesList*/);
