Index: code/branches/RacingBots_FS18/data/levels/newnewnewspacerace.oxw
===================================================================
--- code/branches/RacingBots_FS18/data/levels/newnewnewspacerace.oxw	(revision 11912)
+++ code/branches/RacingBots_FS18/data/levels/newnewnewspacerace.oxw	(revision 11913)
@@ -21,5 +21,5 @@
 
   include("templates/spaceshipAssff.oxt")
-  include("templates/pickupRepresentationTemplates.oxt")
+  include("templates/SpaceRaceTemplates.oxt")
 
 ?>
@@ -245,6 +245,6 @@
     </collisionShapes>
     </RaceCheckPoint>
-
-
+            <Model mesh="cube.mesh" scale=2 position="3000,200,100"/>
+            <Model mesh="cube.mesh" scale=2 position="5000,100,500"/>
 
 <RaceCheckPoint name="checkpoint2" yaw=90 pitch=90 position="3000,200,100" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="1" islast="false" nextcheckpoints="2,-1,-1">
@@ -261,5 +261,5 @@
 
 
-<RaceCheckPoint name="checkpoint3" yaw=90 pitch=90 position="5000,100,500" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1">
+<RaceCheckPoint name="checkpoint3" yaw=90 pitch=90 position="5000,-100,500" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1">
         <attached>
       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
@@ -287,33 +287,33 @@
 
 
-<RaceCheckPoint name="checkpoint5"  yaw=90 pitch=90 position="10000,-200,200" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="4" islast="false" nextcheckpoints="5,-1,-1">
-        <attached>
-      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
-    </attached>
-    <collisionShapes>
-        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
-        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
-        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
-        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
-    </collisionShapes>
-    </RaceCheckPoint>
-
-
-
-<RaceCheckPoint name="checkpoint6" yaw=90 pitch=90 position="13000,200,400" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="5" islast="false" nextcheckpoints="6,-1,-1">
-        <attached>
-      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
-    </attached>
-    <collisionShapes>
-        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
-        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
-        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
-        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
-    </collisionShapes>
-    </RaceCheckPoint>
-
-
-
-<RaceCheckPoint name="checkpoint7" yaw=90 pitch=90 position="15000,0,0" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="6" islast="false" nextcheckpoints="7,-1,-1">
+<RaceCheckPoint name="checkpoint5"  yaw=90 pitch=90 position="11000,-200,200" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="4" islast="false" nextcheckpoints="5,-1,-1">
+        <attached>
+      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
+    </attached>
+    <collisionShapes>
+        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
+        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
+        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
+        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
+    </collisionShapes>
+    </RaceCheckPoint>
+
+
+
+<RaceCheckPoint name="checkpoint6" yaw=90 pitch=90 position="13000,-50,400" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="5" islast="false" nextcheckpoints="6,-1,-1">
+        <attached>
+      <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
+    </attached>
+    <collisionShapes>
+        <BoxCollisionShape position="0,0,70"      halfExtents="70, 10, 10" />
+        <BoxCollisionShape position="0,0,-70"     halfExtents="70, 10, 10" />
+        <BoxCollisionShape position="70,0,0"      halfExtents="10, 10, 70" />
+        <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
+    </collisionShapes>
+    </RaceCheckPoint>
+
+
+
+<RaceCheckPoint name="checkpoint7" yaw=90 pitch=90 position="15500,0,0" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="6" islast="false" nextcheckpoints="7,-1,-1">
         <attached>
       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
@@ -406,5 +406,5 @@
 
 
-<RaceCheckPoint name="checkpoint14" yaw=90 pitch=90 position="35000,120,20" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="13" islast="false" nextcheckpoints="14,-1,-1">
+<RaceCheckPoint name="checkpoint14" yaw=90 pitch=90 position="35000,700,20" direction="0,1,0" roll="0" collisionType="static" scale="1" distance="60" checkpointindex="13" islast="false" nextcheckpoints="14,-1,-1">
         <attached>
       <Model position="0,0,0" scale="70" mesh="Checkpoint_InnerRing.mesh"/>
@@ -476,5 +476,5 @@
         <BoxCollisionShape position="-70,0,0"     halfExtents="10, 10, 70" />
     </collisionShapes>
-    </RaceCheckPoint>
+    </RaceCheckPoint> 
 
 <!-- the last checkpoint is bigger and red -->
@@ -489,5 +489,5 @@
         <BoxCollisionShape position="-90,0,0"     halfExtents="13, 13, 90" />
     </collisionShapes>
-    </RaceCheckPoint>
+    </RaceCheckPoint> 
 
 
@@ -532,11 +532,10 @@
 <!-- ---------------------PickUps---------------------- -->
 
-    <PickupSpawner pickup=smallshrinkpickup position="10000,-200,200" triggerDistance="60" respawnTime="10" maxSpawnedItems="10" scale="8"/>
-    <PickupSpawner pickup=mediumboostpickup position="24000,-150,-80" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
+    
+    <PickupSpawner pickup=mediumboostpickup position="24000,-165,-80" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
     <PickupSpawner pickup=smallboostpickup position="38000,-200,0" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
 
-    <PickupSpawner pickup=smallspeedpickup position="7000,-200,100" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
-    <PickupSpawner pickup=mediumshinkpickup position="16000,150,50" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
-    <PickupSpawner pickup=triplehealthspeedinvisibilitypickup position="41000,-300,100" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
+    <PickupSpawner pickup=smallspeedpickup position="9000,-150,150" triggerDistance="60" respawnTime="10" maxSpawnedItems="8" scale="10"/>
+ 
   </Scene>
 </Level>
Index: code/branches/RacingBots_FS18/src/modules/gametypes/SpaceRace.cc
===================================================================
--- code/branches/RacingBots_FS18/src/modules/gametypes/SpaceRace.cc	(revision 11912)
+++ code/branches/RacingBots_FS18/src/modules/gametypes/SpaceRace.cc	(revision 11913)
@@ -125,4 +125,5 @@
         {
             engine->setActive(false);
+            engine->addSpeedMultiply(3.5f);
         }
 
Index: code/branches/RacingBots_FS18/src/modules/gametypes/SpaceRaceController.cc
===================================================================
--- code/branches/RacingBots_FS18/src/modules/gametypes/SpaceRaceController.cc	(revision 11912)
+++ code/branches/RacingBots_FS18/src/modules/gametypes/SpaceRaceController.cc	(revision 11913)
@@ -235,46 +235,4 @@
     }
 
-    /*RaceCheckPoint* SpaceRaceController::addVirtualCheckPoint( RaceCheckPoint* previousCheckpoint, int indexFollowingCheckPoint , const Vector3& virtualCheckPointPosition )
-    {
-        orxout()<<"add VCP at"<<virtualCheckPointPosition.x<<", "<<virtualCheckPointPosition.y<<", "<<virtualCheckPointPosition.z<<endl;
-        RaceCheckPoint* newTempRaceCheckPoint;
-        ObjectList<SpaceRaceManager> list;
-        for (ObjectList<SpaceRaceManager>::iterator it = list.begin(); it!= list.end(); ++it)
-        {
-            newTempRaceCheckPoint = new RaceCheckPoint((*it));
-        }
-        newTempRaceCheckPoint->setVisible(false);
-        newTempRaceCheckPoint->setPosition(virtualCheckPointPosition);
-        newTempRaceCheckPoint->setCheckpointIndex(virtualCheckPointIndex);
-        newTempRaceCheckPoint->setLast(false);
-        newTempRaceCheckPoint->setNextVirtualCheckpointsAsVector3(Vector3(indexFollowingCheckPoint,-1,-1));
-
-        Vector3 temp = previousCheckpoint->getVirtualNextCheckpointsAsVector3();
-        //orxout()<<"temp bei 0: ="<< temp.x<< temp.y<< temp.z<<endl;
-        checkpoints_.insert(checkpoints_.end(), newTempRaceCheckPoint);
-        int positionInNextCheckPoint;
-        for (int i = 0; i <3; i++)
-        {
-            if(previousCheckpoint->getVirtualNextCheckpointsAsVector3()[i] == indexFollowingCheckPoint)
-            positionInNextCheckPoint=i;
-        }
-        switch(positionInNextCheckPoint)
-        {
-            case 0: temp.x=virtualCheckPointIndex; break;
-            case 1: temp.y=virtualCheckPointIndex; break;
-            case 2: temp.z=virtualCheckPointIndex; break;
-        }
-        previousCheckpoint->setNextVirtualCheckpointsAsVector3(temp); //Existiert internes Problem bei negativen index fueer next Checkpoint
-        virtualCheckPointIndex--;
-        //orxout()<<"temp bei 1: ="<< temp.x<< temp.y<< temp.z<<endl;
-        //orxout()<<"temp nach ausgabe: "<<previousCheckpoint->getVirtualNextCheckpointsAsVector3().x<<previousCheckpoint->getVirtualNextCheckpointsAsVector3().y<<previousCheckpoint->getVirtualNextCheckpointsAsVector3().z<<endl;
-        //OrxAssert(virtualCheckPointIndex < -1, "TO much virtual cp");
-        orxout()<<"id: "<< previousCheckpoint->getCheckpointIndex() <<", following:"<<indexFollowingCheckPoint<<" :       "<<temp.x<<", "<<temp.y<<", "<<temp.z<<";       ";
-         temp=previousCheckpoint->getNextCheckpointsAsVector3();
-         orxout()<<"id: "<< previousCheckpoint->getCheckpointIndex() <<":       "<<temp.x<<", "<<temp.y<<", "<<temp.z<<";       ";
-         orxout()<<endl;
-        return newTempRaceCheckPoint;
-    }*/
-
     SpaceRaceController::~SpaceRaceController()
     {
@@ -380,164 +338,3 @@
 
     }
-
-    /*void SpaceRaceController::computeVirtualCheckpoint(RaceCheckPoint* racepoint1, RaceCheckPoint* racepoint2, const std::vector<StaticEntity*>& allObjects)
-    {
-        Vector3 cP1ToCP2=(racepoint2->getPosition()-racepoint1->getPosition()) / (racepoint2->getPosition()-racepoint1->getPosition()).length(); //unit Vector
-        Vector3 centerCP1=racepoint1->getPosition();
-        btVector3 positionObject;
-        btScalar radiusObject;
-
-        for (std::vector<StaticEntity*>::iterator it = allObjects.begin(); it != allObjects.end(); ++it)
-        {
-            for (int everyShape=0; (*it)->getAttachedCollisionShape(everyShape) != nullptr; everyShape++)
-            {
-                btCollisionShape* currentShape = (*it)->getAttachedCollisionShape(everyShape)->getCollisionShape();
-                if(currentShape == nullptr)
-                continue;
-
-                currentShape->getBoundingSphere(positionObject,radiusObject);
-                Vector3 positionObjectNonBT(positionObject.x(), positionObject.y(), positionObject.z());
-                Vector3 norm_r_CP = cP1ToCP2.crossProduct(centerCP1-positionObjectNonBT);
-
-                if(norm_r_CP.length() == 0){
-                    Vector3 zufall;
-                    do{
-                        zufall=Vector3(rnd(),rnd(),rnd());//random
-                    }while((zufall.crossProduct(cP1ToCP2)).length() == 0);
-                    norm_r_CP=zufall.crossProduct(cP1ToCP2);
-                }
-                Vector3 VecToVCP = norm_r_CP.crossProduct(cP1ToCP2);
-                float distanzToCP1 = sqrt(powf(radiusObject,4)/(powf((centerCP1-positionObjectNonBT).length(), 2)-powf(radiusObject,2))+powf(radiusObject,2));
-                float distanzToCP2 = sqrt(powf(radiusObject,4)/(powf((racepoint2->getPosition()-positionObjectNonBT).length(), 2)-powf(radiusObject,2))+powf(radiusObject,2));
-                float distanz = std::max(distanzToCP1,distanzToCP2);
-                //float distanz = 0.0f; //TEMPORARY
-                Vector3 newCheckpointPositionPos = positionObjectNonBT+(distanz*VecToVCP)/VecToVCP.length();
-                Vector3 newCheckpointPositionNeg = positionObjectNonBT-(distanz*VecToVCP)/VecToVCP.length();
-                if((newCheckpointPositionPos - centerCP1).length() + (newCheckpointPositionPos - (centerCP1+cP1ToCP2)).length() < (newCheckpointPositionNeg - centerCP1).length() + (newCheckpointPositionNeg - (centerCP1+cP1ToCP2)).length() )
-                {
-                    RaceCheckPoint* newVirtualCheckpoint = addVirtualCheckPoint(racepoint1,racepoint2->getCheckpointIndex(), newCheckpointPositionPos);
-                }
-                else
-                {
-                    RaceCheckPoint* newVirtualCheckpoint = addVirtualCheckPoint(racepoint1,racepoint2->getCheckpointIndex(), newCheckpointPositionNeg);
-                }
-                return;
-            }
-        }
-
-    }*/
-
-    /*void SpaceRaceController::placeVirtualCheckpoints(RaceCheckPoint* racepoint1, RaceCheckPoint* racepoint2)
-    {
-        Vector3 point1 = racepoint1->getPosition();
-        Vector3 point2 = racepoint2->getPosition();
-        std::vector<StaticEntity*> problematicObjects;
-
-        ObjectList<StaticEntity> list;
-        for (ObjectList<StaticEntity>::iterator it = list.begin(); it!= list.end(); ++it)
-        {
-
-            if (dynamic_cast<RaceCheckPoint*>(*it) != nullptr)
-            {
-                continue;
-            } // does not work jet
-
-            problematicObjects.insert(problematicObjects.end(), *it);
-            //it->getScale3D();// vector fuer halbe wuerfellaenge
-        }
-
-        if(!directLinePossible(racepoint1, racepoint2, problematicObjects))
-        {
-            //orxout()<<"From "<<racepoint1->getCheckpointIndex()<<" to "<<racepoint2->getCheckpointIndex()<<"produces: "<< virtualCheckPointIndex<<endl;
-            computeVirtualCheckpoint(racepoint1, racepoint2, problematicObjects);
-        }
-
-        //
-        //        do{
-        //            zufall=Vector3(rnd(),rnd(),rnd());//random
-        //        }while((zufall.crossProduct(objectmiddle-racepoint1->getPosition())).length()==0);
-        //
-        //        Vector3 normalvec=zufall.crossProduct(objectmiddle-racepoint1->getPosition());
-        //        // a'/b'=a/b => a' =b'*a/b
-        //        float laengeNormalvec=(objectmiddle-racepoint1->getPosition()).length()/sqrt((objectmiddle-racepoint1->getPosition()).squaredLength()-radius*radius)*radius;
-        //        addVirtualCheckPoint(racepoint1,racepoint2->getCheckpointIndex(), objectmiddle+normalvec/normalvec.length()*laengeNormalvec);
-
-        //        Vector3 richtungen [6];
-        //        richtungen[0]= Vector3(1,0,0);
-        //        richtungen[1]= Vector3(-1,0,0);
-        //        richtungen[2]= Vector3(0,1,0);
-        //        richtungen[3]= Vector3(0,-1,0);
-        //        richtungen[4]= Vector3(0,0,1);
-        //        richtungen[5]= Vector3(0,0,-1);
-        //
-        //        for (int i = 0; i< 6; i++)
-        //        {
-        //            const int STEPS=100;
-        //            const float PHI=1.1;
-        //            bool collision=false;
-        //
-        //            for (int j =0; j<STEPS; j++)
-        //            {
-        //                Vector3 tempPosition=(point1 - (point2-point1+richtungen[i]*PHI)*(float)j/STEPS);
-        //                for (std::vector<StaticEntity*>::iterator it = problematicObjects.begin(); it!=problematicObjects.end(); ++it)
-        //                {
-        //                    btVector3 positionObject;
-        //                    btScalar radiusObject;
-        //                    if((*it)==nullptr)
-        //                    {   orxout()<<"Problempoint 1.1"<<endl; continue;}
-        //                    //TODO: Probably it points on a wrong object
-        //                    for (int everyShape=0; (*it)->getAttachedCollisionShape(everyShape)!=nullptr; everyShape++)
-        //                    {
-        //                        if((*it)->getAttachedCollisionShape(everyShape)->getCollisionShape()==nullptr)
-        //                        {    continue;}
-        //
-        //                        orxout()<<"Problempoint 2.1"<<endl;
-        //                        (*it)->getAttachedCollisionShape(everyShape)->getCollisionShape()->getBoundingSphere(positionObject,radiusObject);
-        //                        Vector3 positionObjectNonBT(positionObject.x(), positionObject.y(), positionObject.z());
-        //                        if (((tempPosition - positionObjectNonBT).length()<radiusObject) && (vergleicheQuader((tempPosition-positionObjectNonBT),(*it)->getScale3D())))
-        //                        {
-        //                            collision=true; break;
-        //                        }
-        //                    }
-        //                    if(collision) break;
-        //                }
-        //                if(collision)break;
-        //            }
-        //            if(collision) continue;
-        //            // no collision => possible Way
-        //            for (float j =0; j<STEPS; j++)
-        //            {
-        //                Vector3 possiblePosition=(point1 - (point2-point1+richtungen[i]*PHI)*j/STEPS);
-        //                collision=false;
-        //                for(int ij=0; ij<STEPS; j++)
-        //                {
-        //                    Vector3 tempPosition=(possiblePosition - (point2-possiblePosition)*(float)ij/STEPS);
-        //                    for (std::vector<StaticEntity*>::iterator it = problematicObjects.begin(); it!=problematicObjects.end(); ++it)
-        //                    {
-        //                        btVector3 positionObject;
-        //                        btScalar radiusObject;
-        //                        if((*it)==nullptr)
-        //                        {   orxout()<<"Problempoint 1"<<endl; continue;}
-        //                        for (int everyShape=0; (*it)->getAttachedCollisionShape(everyShape)!=nullptr; everyShape++)
-        //                        {
-        //                            if((*it)->getAttachedCollisionShape(everyShape)->getCollisionShape()==nullptr)
-        //                            {   orxout()<<"Problempoint 2.2"<<endl; continue;}
-        //                            (*it)->getAttachedCollisionShape(everyShape)->getCollisionShape()->getBoundingSphere(positionObject,radiusObject);
-        //                            Vector3 positionObjectNonBT(positionObject.x(), positionObject.y(), positionObject.z());
-        //                            if (((tempPosition-positionObjectNonBT).length()<radiusObject) && (vergleicheQuader((tempPosition-positionObjectNonBT),(*it)->getScale3D())))
-        //                            {
-        //                                collision=true; break;
-        //                            }
-        //                        }
-        //                        if(collision) break;
-        //                    }
-        //                    if(collision)break;
-        //                    //addVirtualCheckPoint(racepoint1, racepoint2->getCheckpointIndex(), possiblePosition);
-        //                    return;
-        //                }
-        //
-        //            }
-        //        }
-
-    }*/
 }
Index: code/branches/RacingBots_FS18/src/orxonox/items/Engine.cc
===================================================================
--- code/branches/RacingBots_FS18/src/orxonox/items/Engine.cc	(revision 11912)
+++ code/branches/RacingBots_FS18/src/orxonox/items/Engine.cc	(revision 11913)
@@ -68,5 +68,5 @@
 
         this->speedAdd_ = 0.0f;
-        this->speedMultiply_ = 3.0f;                       //////////////////////////////////////////
+        this->speedMultiply_ = 1.0f;                       //////////////////////////////////////////
 
         this->setConfigValues();
Index: code/branches/RacingBots_FS18/src/orxonox/worldentities/pawns/SpaceShip.h
===================================================================
--- code/branches/RacingBots_FS18/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 11912)
+++ code/branches/RacingBots_FS18/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 11913)
@@ -103,5 +103,5 @@
             */
             virtual void moveFrontBack(const Vector2& value)
-                { this->steering_.z -= (0.8)*value.x; }
+                { this->steering_.z -= (0.6)*value.x; }
             /**
             @brief Move right or left.
