Index: /orxonox/trunk/src/animation.cc
===================================================================
--- /orxonox/trunk/src/animation.cc	(revision 3815)
+++ /orxonox/trunk/src/animation.cc	(revision 3816)
@@ -35,4 +35,5 @@
 Anim::~Anim(void)
 {
+  AnimationPlayer::getInstance()->removeAnimation(this);
 }
 
Index: /orxonox/trunk/src/animation_player.cc
===================================================================
--- /orxonox/trunk/src/animation_player.cc	(revision 3815)
+++ /orxonox/trunk/src/animation_player.cc	(revision 3816)
@@ -50,18 +50,12 @@
 
    !! DANGER !! when unloading the AnimationPlayer no other Function
-   should reference any Animations, because it automatically deletes
-   them. This usually happens when unloading a World.
+   should reference any Animations, from the animationList because it 
+   automatically deletes them. 
+   This usually happens when unloading a World.
 */
 AnimationPlayer::~AnimationPlayer () 
 {
   // deleting the Animation List AND all the elements of the List
-   tIterator<Anim>* animIt = animationList->getIterator();
-  Anim* anim = animIt->nextElement();
-  while( anim != NULL)
-    {
-      delete anim;
-      anim = animIt->nextElement();
-    }
-  delete animIt;
+  this->flush();
   delete this->animationList;
 
@@ -83,4 +77,33 @@
 
 /**
+   \brief removes an Animation from the Animation List, WITHOUT deleting it.
+   \param animation the Anmination to remove from the List
+*/
+void AnimationPlayer::removeAnimation(Anim* animation)
+{
+  this->animationList->remove(animation);
+}
+
+/**
+   \brief empties the list AND deletes all the Animations
+*/ 
+void AnimationPlayer::flush(void)
+{
+  // deleting the Animation List AND all the elements of the List
+  tIterator<Anim>* animIt = this->animationList->getIterator();
+  Anim* anim = animIt->nextElement();
+  while( anim != NULL)
+    {
+      delete anim;
+      this->animationList->remove(anim);
+      anim = animIt->nextElement();
+    }
+  delete animIt;
+
+  delete this->animationList;
+  this->animationList = new tList<Anim>();
+}
+
+/**
    \brief Ticks all the animations in animationList 
    \param timePassed the time passed since the last tick.
@@ -88,5 +111,5 @@
 void AnimationPlayer::tick(float timePassed)
 {
-  tIterator<Anim>* animIt = animationList->getIterator();
+  tIterator<Anim>* animIt = this->animationList->getIterator();
   Anim* anim = animIt->nextElement();
   while( anim != NULL)
@@ -96,4 +119,28 @@
     }
   delete animIt;
+}
 
+
+/**
+   \brief Outputs some nice debug-information
+*/
+void AnimationPlayer::debug(void)
+{
+  PRINT(0)("+------------------------------------+\n");
+  PRINT(0)("+ ANIMATION PLAYER DEBUG INFORMATION +\n");
+  PRINT(0)("+------------------------------------+\n");
+  PRINT(0)("| Reference: %p\n", this);
+  PRINT(0)("| CountOfAnims %d\n", this->animationList->getSize());
+  PRINT(0)("-Animation Information---------------+\n");
+  // Per ANIMATION DEBUG
+  tIterator<Anim>* animIt = this->animationList->getIterator();
+  Anim* anim = animIt->nextElement();
+  while( anim != NULL)
+    {
+      //      anim->debug();
+      anim = animIt->nextElement();
+    }
+  delete animIt;
+
+  PRINT(0)("+--------------------------------AP--+\n");
 }
Index: /orxonox/trunk/src/animation_player.h
===================================================================
--- /orxonox/trunk/src/animation_player.h	(revision 3815)
+++ /orxonox/trunk/src/animation_player.h	(revision 3816)
@@ -19,6 +19,10 @@
 
   void addAnimation(Anim* animation);
+  void removeAnimation(Anim* animation);
+  void flush(void);
 
   void tick(float timePassed);
+
+  void debug(void);
 
  private:
Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 3815)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 3816)
@@ -162,4 +162,6 @@
 
   delete this->simpleAnimation;
+
+  AnimationPlayer::getInstance()->debug();
   delete AnimationPlayer::getInstance(); // this should be at the end of the unloading sequence.
   //delete garbagecollecor
@@ -382,5 +384,4 @@
 	    testAnim->addKeyFrame(1.0, 1.0, ANIM_LINEAR);
 	    testAnim->setInfinity(ANIM_INF_REWIND);
-
 	    break;
 	  }
@@ -947,6 +948,4 @@
       this->simpleAnimation->tick(seconds);
       AnimationPlayer::getInstance()->tick(seconds);
-      //testAnim->tick(seconds);
-
     }
   this->lastFrame = currentFrame;
