Index: code/branches/pickupsFS14/data/levels/Jump.oxw
===================================================================
--- code/branches/pickupsFS14/data/levels/Jump.oxw	(revision 10031)
+++ code/branches/pickupsFS14/data/levels/Jump.oxw	(revision 10032)
@@ -56,4 +56,15 @@
     </Planet>
 
+    <MovableEntity
+      position="0, 0, 500"
+      scale="5"
+      collisionType="dynamic"
+      mass="10000000"
+    >
+      <attached>
+        <Model mesh="Platform01.mesh" />
+      </attached>
+    </MovableEntity>
+
 
 
@@ -64,6 +75,4 @@
 
     <SpawnPoint team=0 position="0,0,0" lookat="0,0,-1" spawnclass=JumpShip pawndesign=spaceshipjump />
-
-    
 
 
Index: code/branches/pickupsFS14/src/modules/jump/Jump.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/Jump.cc	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/Jump.cc	(revision 10032)
@@ -60,24 +60,15 @@
     {
         RegisterObject(Jump);
+        platformList.clear();
+        yScreenPosition = 0;
+        screenShiftSinceLastUpdate = 0;
+
         //this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
         //this->center_ = 0;
-       // init();
         //this->setHUDTemplate("JumpHUD");
 
-    }
-
-    void Jump::init()
-    {
-        /*bEndGame = false;
-        lives = 3;
-        level = 1;
-        point = 0;
-        bShowLevel = false;
-        multiplier = 1;
-        b_combo = false;*/
-        // spawn enemy every 3.5 seconds
-        //enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&Jump::spawnEnemy, this)));
-        //comboTimer.setTimer(3.0f, true, createExecutor(createFunctor(&Jump::comboControll, this)));
-    }
+
+    }
+
 
     /*void Jump::levelUp()
@@ -104,13 +95,51 @@
         if (player == NULL)
         {
-        	ObjectList<JumpShip>::iterator it;
-        	it = ObjectList<JumpShip>::begin();
-        	/*for (ObjectList<JumpShip>::iterator it = ObjectList<JumpShip>::begin(); it != ObjectList<JumpShip>::end(); ++it)
+        	for (ObjectList<JumpShip>::iterator it = ObjectList<JumpShip>::begin(); it != ObjectList<JumpShip>::end(); ++it)
         	{
                 player = *it;
-        	}*/
+        	}
         }
         return player;
     }
+
+    void Jump::tick(float dt)
+    {
+
+
+        if (getPlayer() != NULL)
+        {
+            Vector3 shipPosition = getPlayer()->getPosition();
+
+        	// Bildschirmposition kann nur nach oben verschoben werden
+        	if (shipPosition.y > yScreenPosition)
+        	{
+        		screenShiftSinceLastUpdate += shipPosition.y - yScreenPosition;
+
+        		yScreenPosition = shipPosition.y;
+        	}
+
+        	// Kameraposition nachfuehren
+        	if (camera == NULL)
+        	{
+        		camera = getPlayer()->getCamera();
+        	}
+            if (camera != NULL)
+            {
+                camera->setPosition(Vector3(-shipPosition.x, yScreenPosition-shipPosition.y, 100));
+                //camera->setOrientation(Vector3::UNIT_Z, Degree(180));
+            }
+
+            if (screenShiftSinceLastUpdate > 200.0)
+            {
+            	screenShiftSinceLastUpdate -= 200.0;
+            	orxout() << "new section added" << endl;
+            	addPlatform(shipPosition.x, shipPosition.y + 300.0);
+            }
+
+        }
+
+        SUPER(Jump, tick, dt);
+    }
+
 
     /*void Jump::spawnEnemy()
@@ -158,7 +187,11 @@
     }*/
 
-    /*void Jump::start()
-    {
-        init();
+
+    void Jump::start()
+    {
+    	// Call start for the parent class.
+    	Deathmatch::start();
+
+        /*
         // Set variable to temporarily force the player to spawn.
         this->bForceSpawn_ = true;
@@ -170,7 +203,10 @@
             return;
         }
-        // Call start for the parent class.
-        Deathmatch::start();
-    }*/
+        */
+
+    	//addPlatform(0,0);
+
+    }
+
 
     /*void Jump::addPoints(int numPoints)
@@ -191,3 +227,11 @@
         GSLevel::startMainMenu();
     }*/
+
+    void Jump::addPlatform(float xPosition, float yPosition)
+    {
+		JumpPlatform* newPlatform = new JumpPlatform(center_->getContext());
+		newPlatform->setPosition(Vector3(xPosition, yPosition, 0));
+		platformList.push_front(newPlatform);
+    }
+
 }
Index: code/branches/pickupsFS14/src/modules/jump/Jump.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/Jump.h	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/Jump.h	(revision 10032)
@@ -41,4 +41,6 @@
 #include "tools/Timer.h"
 #include "JumpPlatform.h"
+#include <list>
+
 
 namespace orxonox
@@ -49,12 +51,15 @@
         public:
             Jump(Context* context);
-
-            //virtual void start();
+            virtual void start();
             //virtual void end();
             //virtual void addBots(unsigned int amount){} //<! overwrite function in order to bypass the addbots command
+
+            virtual void tick(float dt);
 
             //void spawnEnemy();
 
             void setCenterpoint(JumpCenterPoint* center){ this->center_ = center; }
+
+            virtual void addPlatform(float x, float y);
 
            /*int getLives(){return this->lives;}
@@ -68,5 +73,4 @@
             // checks if multiplier should be reset.
             void comboControll();*/
-            void init();
             //int lives;
             //int multiplier;
@@ -78,4 +82,5 @@
             WeakPtr<JumpCenterPoint> center_;
             WeakPtr<JumpShip> player;
+            WeakPtr<Camera> camera;
 
             /*Timer enemySpawnTimer;
@@ -86,4 +91,7 @@
             int point;
             bool b_combo;*/
+            std::list<JumpPlatform*> platformList;
+            float yScreenPosition;
+            float screenShiftSinceLastUpdate;
     };
 }
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatform.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatform.cc	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatform.cc	(revision 10032)
@@ -51,18 +51,24 @@
         model = new Model(getContext());
         model->setSyncMode(0);
-        model->setMeshSource("drone.mesh");
+        model->setMeshSource("Platform01.mesh");
 
-        movableEntity = new MovableEntity(getContext());
-        movableEntity->attach(model);
-
-        movableEntity->setScale(100);
-        //movableEntity->setPosition(Vector3(0,0,0));
-        //movableEntity->setVelocity(Vector3(0,0,1));
-
+        attach(model);
+        setScale(5);
+        setPosition(Vector3(0,0,0));
+        setVelocity(Vector3(0,0,0));
 
     }
 
+    void JumpPlatform::tick(float dt)
+    {
+    	//setAngularVelocity(getAngularVelocity() + Vector3(0.05,0,0));
+    	/*Vector3 movement(0,0,0);
+        Vector3 shipPosition = getPosition();*/
 
 
 
+        SUPER(JumpPlatform, tick, dt);
+    }
+
+
 }
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatform.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatform.h	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatform.h	(revision 10032)
@@ -45,10 +45,8 @@
         public:
             JumpPlatform(Context* context);
-
+            virtual void tick(float dt);
 
         private:
             Model* model;
-            MovableEntity* movableEntity;
-
     };
 }
Index: code/branches/pickupsFS14/src/modules/jump/JumpPrereqs.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPrereqs.h	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPrereqs.h	(revision 10032)
@@ -71,4 +71,5 @@
     class JumpCenterPoint;
     class JumpShip;
+    class JumpPlatform;
     class JumpEnemy;
     class JumpEnemyShooter;
Index: code/branches/pickupsFS14/src/modules/jump/JumpShip.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpShip.cc	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/JumpShip.cc	(revision 10032)
@@ -53,6 +53,4 @@
         upPressed = false;
         downPressed = false;
-
-        yScreenPosition = 0;
         yVelocity = 0;
     }
@@ -60,64 +58,8 @@
     void JumpShip::tick(float dt)
     {
+
+
     	Vector3 movement(0,0,0);
         Vector3 shipPosition = getPosition();
-
-        /*
-        //Movement calculation
-        lastTimeFront += dt * damping;
-        lastTimeLeft += dt * damping;
-        lastTime += dt;
-
-        velocity.x = interpolate(clamp(lastTimeLeft, 0.0f, 1.0f), desiredVelocity.x, 0.0f);
-        velocity.y = interpolate(clamp(lastTimeFront, 0.0f, 1.0f), desiredVelocity.y, 0.0f);
-
-        //Execute movement
-        if (this->hasLocalController())
-        {
-            float dist_y = velocity.y * dt;
-            float dist_x = velocity.x * dt;
-            if(dist_y + posforeward > -42*3 && dist_y + posforeward < 42*6)
-                posforeward += dist_y;
-            else
-            {
-                velocity.y = 0;
-                // restart if game ended
-                if (getGame())
-                    if (getGame()->bEndGame)
-                    {
-                        getGame()->start();
-                        return;
-                    }
-            }
-            if (pos.z + dist_x > 42*2.5 || pos.z + dist_x < -42*3)
-                velocity.x = 0;
-            pos += Vector3(1000 + velocity.y, 0, velocity.x) * dt;
-
-        }
-
-        // shoot!
-        if (isFireing)
-            ControllableEntity::fire(0);
-		*/
-        // Camera
-
-
-
-
-	    /*
-        // bring back on track!
-        if(pos.y != 0)
-            pos.y = 0;
-
-        setPosition(pos);
-        setOrientation(Vector3::UNIT_Y, Degree(270));
-
-        // Level up!
-        if (pos.x > 42000)
-        {
-            updateLevel();
-            setPosition(Vector3(0, 0, pos.z)); // pos - Vector3(30000, 0, 0)
-        }
-        */
 
     	// Berechne Bewegung anhand der Eingabe
@@ -141,9 +83,4 @@
     	else if (downPressed == true)
     	{
-    		platform = new JumpPlatform(getContext());
-    		platform->setPosition(Vector3(0, 0, 0));
-    		platform->setVelocity(Vector3(0, 0, 0));
-    		platform->setScale(100);
-
     		movement -= Vector3(0, 0, 0);
     		downPressed = false;
@@ -162,23 +99,5 @@
     	setPosition(shipPosition);
 
-    	// Bildschirmposition kann nur nach oben verschoben werden
-    	if (shipPosition.y > yScreenPosition)
-    	{
-    		yScreenPosition = shipPosition.y;
-    	}
-
-    	// Kameraposition nachfuehren
-    	if (camera == NULL)
-    	{
-    		camera = getCamera();
-    	}
-        if (camera != NULL)
-        {
-
-            camera->setPosition(Vector3(-shipPosition.x, yScreenPosition-shipPosition.y, 100));
-            //camera->setOrientation(Vector3::UNIT_Z, Degree(180));
-        }
-
-        SUPER(JumpShip, tick, dt);
+    	SUPER(JumpShip, tick, dt);
     }
 /*
Index: code/branches/pickupsFS14/src/modules/jump/JumpShip.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpShip.h	(revision 10031)
+++ code/branches/pickupsFS14/src/modules/jump/JumpShip.h	(revision 10032)
@@ -73,5 +73,4 @@
             WeakPtr<Jump> getGame();
             WeakPtr<Jump> game;
-            WeakPtr<Camera> camera;
             const float xVelocity = 150.0f;
             const float xBoundary = 200.0f;
@@ -100,10 +99,7 @@
             bool downPressed;
 
-            float yScreenPosition;
             float yVelocity;
             const float yAcceleration = 10.0f;
             const float ySpeedAfterJump = 300.0f;
-
-            JumpPlatform* platform;
     };
 }
