Index: orxonox/trunk/src/game_loader.cc
===================================================================
--- orxonox/trunk/src/game_loader.cc	(revision 3726)
+++ orxonox/trunk/src/game_loader.cc	(revision 3727)
@@ -101,6 +101,10 @@
 
 	World* world1 = new World(DEBUG_WORLD_1);
-	world1->setNextStoryID(WORLD_ID_GAMEEND);
+	world1->setNextStoryID(WORLD_ID_2);
 	debugCampaign->addEntity(world1, WORLD_ID_1);
+
+	World* world2 = new World(DEBUG_WORLD_2);
+	world2->setNextStoryID(WORLD_ID_GAMEEND);
+	debugCampaign->addEntity(world2, WORLD_ID_2);
 
 	this->currentCampaign = debugCampaign;
Index: orxonox/trunk/src/simple_animation.cc
===================================================================
--- orxonox/trunk/src/simple_animation.cc	(revision 3726)
+++ orxonox/trunk/src/simple_animation.cc	(revision 3727)
@@ -26,8 +26,20 @@
 
 
+SimpleAnimation* SimpleAnimation::singletonRef = 0;
+/**
+   \brief gets the singleton instance
+   \returns singleton instance
+*/
+SimpleAnimation* SimpleAnimation::getInstance()
+{
+  if( singletonRef == NULL)
+    singletonRef = new SimpleAnimation();
+  return singletonRef;
+}
+
 /**
    \brief standard constructor
 */
-SimpleAnimation::SimpleAnimation (PNode* parent) 
+SimpleAnimation::SimpleAnimation () 
 {
    this->setClassName ("SimpleAnimation");
@@ -35,5 +47,4 @@
    this->localTime = 0;
    this->bRunning = false;
-   this->parent = parent;
    this->currentFrame = NULL;
    this->lastFrame = NULL;
@@ -61,4 +72,39 @@
 
 
+/**
+   \brief this determines the start of an Animator Describtion
+
+   this can then be followed by different commands like addKeyFrame(..) etc. and
+   will be closed with AnimatiorEnd()
+*/
+void SimpleAnimation::AnimatorBegin()
+{
+  this->bDescriptive = true;
+}
+
+
+/**
+   \brief this determines the end of an Animator Describtion
+
+   this can then be followed by different commands like addKeyFrame(..) etc. and
+   will be closed with AnimatiorEnd()
+*/
+void SimpleAnimation::AnimatorEnd()
+{
+  this->workingObject = NULL;
+  this->bDescriptive = false;
+}
+
+
+/**
+   \brief select an object to work on by using this function
+   \param object wo work on
+*/
+void SimpleAnimation::selectObject(WorldEntity* entity)
+{
+  this->workingObject = entity;
+}
+
+
 
 /**
@@ -70,4 +116,9 @@
 void SimpleAnimation::addKeyFrame(Vector* point, Quaternion* orientation, float time)
 {
+  if( !this->bDescriptive)
+    {
+      PRINTF(1)("SimpleAnimation: executing animation code outside a AnimationBegin()/AnimationEnd() - ignoring\n");
+      return;
+    }
   KeyFrame* frame = new KeyFrame;
   frame->position = point;
@@ -75,4 +126,5 @@
   frame->time = time;
   frame->mode = DEFAULT_ANIMATION_MODE;
+  frame->object = this->workingObject;
   this->frames->add(frame);
 }
@@ -88,4 +140,9 @@
 void SimpleAnimation::addKeyFrame(Vector* point, Quaternion* orientation, float time, movementMode mode)
 {
+  if( !this->bDescriptive)
+    {
+      PRINTF(1)("SimpleAnimation: executing animation code outside a AnimationBegin()/AnimationEnd() - ignoring\n");
+      return;
+    }
   KeyFrame* frame = new KeyFrame;
   frame->position = point;
@@ -93,4 +150,5 @@
   frame->time = time;
   frame->mode = mode;
+  frame->object = this->workingObject;
   this->frames->add(frame);
 }
@@ -102,6 +160,11 @@
 void SimpleAnimation::addKeyFrame(KeyFrame* frame)
 {
-  if( frame != NULL)
-    this->frames->add(frame);
+  if( !this->bDescriptive)
+    {
+      PRINTF(1)("SimpleAnimation: executing animation code outside a AnimationBegin()/AnimationEnd() - ignoring\n");
+      return;
+    }
+  frame->object = this->workingObject;
+  this->frames->add(frame);
 }
 
Index: orxonox/trunk/src/simple_animation.h
===================================================================
--- orxonox/trunk/src/simple_animation.h	(revision 3726)
+++ orxonox/trunk/src/simple_animation.h	(revision 3727)
@@ -43,11 +43,14 @@
   
  public:
-  SimpleAnimation(PNode* parent);
-  virtual ~SimpleAnimation();
+  static SimpleAnimation* getInstance();
 
+  void AnimatorBegin();
+  void AnimatorEnd();
+  void selectObject(WorldEntity* entity);
   void addKeyFrame(Vector* point, Quaternion* orientation, float time);
   void addKeyFrame(Vector* point, Quaternion* orientation, float time, movementMode mode);
   void addKeyFrame(KeyFrame* frame);
   void reset();
+
 
   void start();
@@ -60,4 +63,8 @@
 
  private:
+  SimpleAnimation();
+  virtual ~SimpleAnimation();
+
+  static SimpleAnimation* singletonRef;
   bool bRunning;                   //<! is set, when the animation is running
   tList<KeyFrame>* frames;         //<! where keyframes are stored in
@@ -69,5 +76,6 @@
   
   Vector* tmpVect;                 //<! this is the temporary vector save place - 
-
+  WorldEntity* workingObject;      //<! this is a pointer to the current working object that has been selected via selectObject()
+  bool bDescriptive;               //<! is true, when AnimatorBegin() was executed but no AnimatorEnd() yet: in describtive mode: pass commands
 };
 
Index: orxonox/trunk/src/story_entities/world.cc
===================================================================
--- orxonox/trunk/src/story_entities/world.cc	(revision 3726)
+++ orxonox/trunk/src/story_entities/world.cc	(revision 3727)
@@ -390,4 +390,77 @@
 
 	    lightMan->getLight(0)->setParent(trackManager->getTrackNode());
+	    break;
+	  }
+	case DEBUG_WORLD_2:
+	  {
+	    lightMan->setPosition(-5.0, 10.0, -40.0);
+	    this->nullParent = NullParent::getInstance ();
+	    this->nullParent->setName ("NullParent");
+
+	    // !\todo old track-system has to be removed
+
+	    //create helper for player
+	    //HelperParent* hp = new HelperParent ();
+	    /* the player has to be added to this helper */
+
+	    // create a player
+	    this->localPlayer = new Player ();
+	    this->localPlayer->setName ("player");
+	    this->spawn (this->localPlayer);
+	    /*monitor progress*/
+	    //this->glmis->step();	    
+	    this->glmis->step();
+
+	    // bind input
+	    Orxonox *orx = Orxonox::getInstance ();
+	    orx->getLocalInput()->bind (this->localPlayer);
+	    
+	    // bind camera
+	    this->localCamera = new Camera();
+	    this->localCamera->setName ("camera");
+	    this->localCamera->lookAt(this->localPlayer);
+	    this->localCamera->setParent(this->localPlayer);
+	    
+	    /*monitor progress*/
+	    this->glmis->step();
+
+	    // Create SkySphere
+	    this->skySphere = new Skysphere("../data/pictures/sky-replace.jpg");
+	    this->skySphere->setName("SkySphere");
+	    this->localCamera->addChild(this->skySphere);
+	    this->skySphere->setMode(PNODE_MOVEMENT);
+
+	    /*monitor progress*/
+	    this->glmis->step();
+
+	    
+	    WorldEntity* env = new Environment();
+	    env->setName ("env");
+	    this->spawn(env);
+
+	   
+	    /*
+	    Vector* es = new Vector (10, 5, 0);
+	    Quaternion* qs = new Quaternion ();
+	    WorldEntity* pr = new Primitive(P_CYLINDER);
+	    pr->setName("primitive");
+	    this->spawn(pr, this->localPlayer, es, qs, PNODE_MOVEMENT);
+	    */
+
+	    /*monitor progress*/
+	    this->glmis->step();
+
+	    //	    trackManager->setBindSlave(env);
+	    PNode* tn = trackManager->getTrackNode();
+	    tn->addChild(this->localPlayer);
+
+	    //localCamera->setParent(TrackNode::getInstance());
+	    tn->addChild(this->localCamera);
+	    //	    localCamera->lookAt(tn);
+	    this->localPlayer->setMode(PNODE_ALL);
+	    //Vector* cameraOffset = new Vector (0, 5, -10);
+	    trackManager->condition(2, LEFTRIGHT, this->localPlayer);
+	    this->glmis->step();
+
 	    break;
 	  }
Index: orxonox/trunk/src/story_entities/world.h
===================================================================
--- orxonox/trunk/src/story_entities/world.h	(revision 3726)
+++ orxonox/trunk/src/story_entities/world.h	(revision 3727)
@@ -24,4 +24,5 @@
 class Terrain;
 class GarbageCollector;
+class SimpleAnimation;
 
 //! The game world Interface
@@ -88,29 +89,31 @@
   void init(char* name, int worldID);
 
-  Uint32 lastFrame;             //!< last time of frame
-  Uint32 dt;                    //!< time needed to calculate this frame
-  double gameTime;              //!< this is where the game time is saved
-  bool bQuitOrxonox;            //!< quit this application
-  bool bQuitCurrentGame;        //!< quit only the current game and return to menu
-  bool bPause;                  //!< pause mode
+  Uint32 lastFrame;                   //!< last time of frame
+  Uint32 dt;                          //!< time needed to calculate this frame
+  double gameTime;                    //!< this is where the game time is saved
+  bool bQuitOrxonox;                  //!< quit this application
+  bool bQuitCurrentGame;              //!< quit only the current game and return to menu
+  bool bPause;                        //!< pause mode
 
-  FontSet* testFont;            //!< A test Font. \todo fix this, so it is for real.
-  GLMenuImageScreen* glmis;     //!< The Level-Loader Display
+  FontSet* testFont;                  //!< A test Font. \todo fix this, so it is for real.
+  GLMenuImageScreen* glmis;           //!< The Level-Loader Display
 
-  char* worldName;              //!< The name of this World
-  int debugWorldNr;             //!< The Debug Nr. needed, if something goes wrong
+  char* worldName;                    //!< The name of this World
+  int debugWorldNr;                   //!< The Debug Nr. needed, if something goes wrong
 
-  PNode* nullParent;            //!< The zero-point, that everything has as its parent.
-  TrackManager* trackManager;   //!< The reference of the TrackManager that handles the course through the Level.
-  Camera* localCamera;          //!< The current Camera
-  Skysphere* skySphere;         //!< The Environmental Heaven of orxonox \todo insert this to environment insted
-  LightManager* lightMan;       //!< The Lights of the Level
-  Terrain* terrain;             //!< The Terrain of the World.
+  PNode* nullParent;                  //!< The zero-point, that everything has as its parent.
+  TrackManager* trackManager;         //!< The reference of the TrackManager that handles the course through the Level.
+  Camera* localCamera;                //!< The current Camera
+  Skysphere* skySphere;               //!< The Environmental Heaven of orxonox \todo insert this to environment insted
+  LightManager* lightMan;             //!< The Lights of the Level
+  Terrain* terrain;                   //!< The Terrain of the World.
 
-  GLuint objectList;            //!< temporary: \todo this will be ereased soon
-  tList<WorldEntity>* entities;//!< A template List of all entities. Every moving thing should be included here, and world automatically updates them.
-  WorldEntity* localPlayer;     //!< The Player, you fly through the level.
+  GLuint objectList;                  //!< temporary: \todo this will be ereased soon
+  tList<WorldEntity>* entities;       //!< A template List of all entities. Every moving thing should be included here, and world automatically updates them.
+  WorldEntity* localPlayer;           //!< The Player, you fly through the level.
 
   GarbageCollector* garbageCollector; //!< reference to the garbage  collector
+
+  SimpleAnimation* simpleAnimation;   //!< reference to the SimpleAnimation object
  
   /* function for main-loop */
