Index: /code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw
===================================================================
--- /code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw	(revision 11776)
+++ /code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw	(revision 11777)
@@ -60,14 +60,16 @@
        <Model scale="10" mesh="arrow.mesh"/>
       </attached>
+      <controller>
+        <ArrowController accuracy = 2000>
+          <gpspoints>
+            <Model mesh="cube.mesh" scale=8 position="100,100,100"/>
+            <Model mesh="cube.mesh" scale=8 position="400,200,187"/>
+            <Model mesh="cube.mesh" scale=8 position="-200,-500,615"/>
+            <Model mesh="cube.mesh" scale=8 position="0,0,0"/>      
+          </gpspoints>
+        </ArrowController>
+      </controller>
     </Arrow>
 
-<ArrowController accuracy = 2000>
-      <gpspoints>
-        <Model mesh="cube.mesh" scale=8 position="100,100,100"/>
-        <Model mesh="cube.mesh" scale=8 position="400,200,187"/>
-        <Model mesh="cube.mesh" scale=8 position="-200,-500,615"/>
-        <Model mesh="cube.mesh" scale=8 position="0,0,0"/>      
-      </gpspoints>
-        </ArrowController>
 
 
Index: /code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc	(revision 11776)
+++ /code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc	(revision 11777)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Oli Scheuss
+ *      jostoffe
  *   Co-authors:
- *      Damian 'Mozork' Frick
+ *      ...
  *
  */
@@ -29,7 +29,7 @@
 #include "ArrowController.h"
 #include "HumanController.h"
-#include "worldentities/WorldEntity.h"
-    
-#include "worldentities/Arrow.h"
+#include "worldentities/ControllableEntity.h"
+
+#include "core/CoreIncludes.h"
 #include "util/Math.h"
 
@@ -39,10 +39,4 @@
     RegisterClass(ArrowController);
 
-
-
-    /**
-    @brief
-        Constructor.
-    */
     ArrowController::ArrowController(Context* context) : Controller(context)
     {
@@ -52,16 +46,16 @@
         this->currentGPSPoint_ = 0;
         this->accuracy_ = 1000.0f;
+    }
 
-        arrow = nullptr;
+    ArrowController::~ArrowController()
+    {
+      for (WorldEntity* gpspoint : this->gpspoints_)
+        {
+            if(gpspoint)
+                gpspoint->destroy();
+        }
 
-        for(Arrow* a: ObjectList<Arrow>())
-            arrow = a;
+    }
 
-        assert(arrow != nullptr);
-        this->setControllableEntity(arrow);
-
-        orxout() << "constructor aufgerufen" << endl;
-    }
-    
     //Set the distance you need to reach before the next waypoint will be selected
     void ArrowController::setAccuracy(float accuracy){
@@ -85,19 +79,4 @@
             return nullptr;
     }
-    /**
-    @brief
-        Destructor.
-    */
-
-    ArrowController::~ArrowController()
-    {
-      for (WorldEntity* gpspoint : this->gpspoints_)
-        {
-            if(gpspoint)
-                gpspoint->destroy();
-        } 
-
-    }
-
 
     void ArrowController::XMLPort(Element& xmlelement, XMLPort::Mode mode)
Index: /code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h	(revision 11776)
+++ /code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h	(revision 11777)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Oli Scheuss
+ *      jostoffe
  *   Co-authors:
- *      Damian 'Mozork' Frick
+ *      ...
  *
  */
@@ -38,10 +38,4 @@
 namespace orxonox
 {
-    /**
-    @brief
-        Controller for the Arrow of the PPS tutorial.
-    @author
-        Oli Scheuss
-    */
     class _OrxonoxExport ArrowController : public Controller, public Tickable
     {
@@ -59,13 +53,8 @@
             virtual void tick(float dt); //!< The controlling happens here. This method defines what the controller has to do each tick.
 
-        protected:
-
+        private:
             std::vector<WeakPtr<WorldEntity>> gpspoints_;
             size_t currentGPSPoint_;
             float accuracy_;
-            WorldEntity* defaultGPSpoint_;
-
-        private:
-            Arrow *arrow;
     };
 }
Index: /code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc
===================================================================
--- /code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc	(revision 11776)
+++ /code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc	(revision 11777)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Oli Scheuss
+ *      jostoffe
  *   Co-authors:
- *      Damian 'Mozork' Frick
+ *      ...
  *
  */
@@ -30,5 +30,4 @@
 
 #include "core/CoreIncludes.h"
-#include "BulletDynamics/Dynamics/btRigidBody.h"
 
 namespace orxonox
@@ -36,139 +35,8 @@
 
     RegisterClass(Arrow);
-    /**
-    @brief
-        Constructor. Registers the object and initializes some default values.
-    @param creator
-        The creator of this object.
-    */
+
     Arrow::Arrow(Context* context) : ControllableEntity(context)
     {
         RegisterObject(Arrow);
-
-        this->localLinearAcceleration_.setValue(0, 0, 0);
-        this->localAngularAcceleration_.setValue(0, 0, 0);
-        this->primaryThrust_  = 100;
-        this->auxiliaryThrust_ = 100;
-        this->rotationThrust_ = 10;
-
-        this->setCollisionType(CollisionType::Dynamic);
-
-        
     }
-
-    /**
-    @brief
-        Destructor. Destroys controller, if present.
-    */
-    Arrow::~Arrow()
-    {
-
-    }
-
-    /**
-    @brief
-        Method for creating a Arrow through XML.
-    */
-    void Arrow::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        // This calls the XMLPort function of the parent class
-        SUPER(Arrow, XMLPort, xmlelement, mode);
-
-        XMLPortParam(Arrow, "primaryThrust", setPrimaryThrust, getPrimaryThrust, xmlelement, mode);
-        XMLPortParam(Arrow, "auxiliaryThrust", setAuxiliaryThrust, getAuxiliaryThrust, xmlelement, mode);
-        XMLPortParam(Arrow, "rotationThrust", setRotationThrust, getRotationThrust, xmlelement, mode);
-     
-    }
-
-    /**
-    @brief
-        Defines which actions the Arrow has to take in each tick.
-    @param dt
-        The length of the tick.
-    */
-    void Arrow::tick(float dt)
-    {
-        SUPER(Arrow, tick, dt);
-
-        this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() * getMass() * this->auxiliaryThrust_);
-        this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() * getMass() * this->auxiliaryThrust_);
-        if (this->localLinearAcceleration_.z() > 0)
-            this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->auxiliaryThrust_);
-        else
-            this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->primaryThrust_);
-        this->physicalBody_->applyCentralForce(physicalBody_->getWorldTransform().getBasis() * this->localLinearAcceleration_);
-        this->localLinearAcceleration_.setValue(0, 0, 0);
-
-        this->localAngularAcceleration_ *= this->getLocalInertia() * this->rotationThrust_;
-        this->physicalBody_->applyTorque(physicalBody_->getWorldTransform().getBasis() * this->localAngularAcceleration_);
-        this->localAngularAcceleration_.setValue(0, 0, 0);
-    }
-
-    /**
-    @brief
-        Moves the Arrow in the negative z-direction (Front/Back) by an amount specified by the first component of the input 2-dim vector.
-    @param value
-        The vector determining the amount of the movement.
-    */
-    void Arrow::moveFrontBack(const Vector2& value)
-    {
-        this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() - value.x);
-    }
-
-    /**
-    @brief
-        Moves the Arrow in the x-direction (Right/Left) by an amount specified by the first component of the input 2-dim vector.
-    @param value
-        The vector determining the amount of the movement.
-    */
-    void Arrow::moveRightLeft(const Vector2& value)
-    {
-        this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() + value.x);
-    }
-
-    /**
-    @brief
-        Moves the Arrow in the y-direction (Up/Down) by an amount specified by the first component of the input 2-dim vector.
-    @param value
-        The vector determining the amount of the movement.
-    */
-    void Arrow::moveUpDown(const Vector2& value)
-    {
-        this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() + value.x);
-    }
-
-    /**
-    @brief
-        Rotates the Arrow around the y-axis by the amount specified by the first component of the input 2-dim vector.
-    @param value
-        The vector determining the amount of the angular movement.
-    */
-    void Arrow::rotateYaw(const Vector2& value)
-    {
-        this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() - value.x);
-    }
-
-    /**
-    @brief
-        Rotates the Arrow around the x-axis by the amount specified by the first component of the input 2-dim vector.
-    @param value
-        The vector determining the amount of the angular movement.
-    */
-    void Arrow::rotatePitch(const Vector2& value)
-    {
-        this->localAngularAcceleration_.setX(this->localAngularAcceleration_.x() + value.x);
-    }
-
-    /**
-    @brief
-        Rotates the Arrow around the z-axis by the amount specified by the first component of the input 2-dim vector.
-    @param value
-        The vector determining the amount of the angular movement.
-    */
-    void Arrow::rotateRoll(const Vector2& value)
-    {
-        this->localAngularAcceleration_.setZ(this->localAngularAcceleration_.z() + value.x);
-    }
-
-
 }
Index: /code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h
===================================================================
--- /code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h	(revision 11776)
+++ /code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h	(revision 11777)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Oli Scheuss
+ *      jostoffe
  *   Co-authors:
- *      Damian 'Mozork' Frick
+ *      ...
  *
  */
@@ -33,112 +33,14 @@
 
 #include "core/XMLPort.h"
-//#include "controllers/ArrowController.h"
 
 #include "ControllableEntity.h"
-#include "WorldEntity.h"
 
 namespace orxonox {
 
-    /**
-    @brief
-        Drone, that is made to move upon a specified pattern.
-        This class was constructed for the PPS tutorial.
-    @author
-        Oli Scheuss
-    */
     class _OrxonoxExport Arrow : public ControllableEntity
     {
         public:
             Arrow(Context* context);
-            virtual ~Arrow();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating an Arrow through XML.
-            virtual void tick(float dt); //!< Defines which actions the Arrow has to take in each tick.
-
-            virtual void moveFrontBack(const Vector2& value);
-            virtual void moveRightLeft(const Vector2& value);
-            virtual void moveUpDown(const Vector2& value);
-
-            virtual void rotateYaw(const Vector2& value);
-            virtual void rotatePitch(const Vector2& value);
-            virtual void rotateRoll(const Vector2& value);
-
-            /**
-            @brief Moves the Drone in the Front/Back-direction by the specifed amount.
-            @param value  The amount by which the drone is to be moved.
-            */
-            inline void moveFrontBack(float value)
-            { this->moveFrontBack(Vector2(value, 0)); }
-            /**
-            @brief Moves the Drone in the Right/Left-direction by the specifed amount.
-            @param value  The amount by which the drone is to be moved.
-            */
-            inline void moveRightLeft(float value)
-            { this->moveRightLeft(Vector2(value, 0)); }
-            /**
-            @brief Moves the Drone in the Up/Down-direction by the specifed amount.
-            @param value  The amount by which the drone is to be moved.
-            */
-            inline void moveUpDown(float value)
-            { this->moveUpDown(Vector2(value, 0)); }
-
-            /**
-            @brief Rotates the Drone around the y-axis by the specifed amount.
-            @param value  The amount by which the drone is to be rotated.
-            */
-            inline void rotateYaw(float value)
-            { this->rotateYaw(Vector2(value, 0)); }
-            /**
-            @brief Rotates the Drone around the x-axis by the specifed amount.
-            @param value  The amount by which the drone is to be rotated.
-            */
-            inline void rotatePitch(float value)
-            { this->rotatePitch(Vector2(value, 0)); }
-            /**
-            @brief Rotates the Drone around the z-axis by the specifed amount.
-            @param value  The amount by which the drone is to be rotated.
-            */
-            inline void rotateRoll(float value)
-            { this->rotateRoll(Vector2(value, 0)); }
-
-            /**
-            @brief Sets the primary thrust to the input amount.
-            @param thrust The amount of thrust.
-            */
-            inline void setPrimaryThrust( float thrust )
-                { this->primaryThrust_ = thrust; }
-            //TODO: Place your set-functions here.
-
-            inline void setAuxiliaryThrust ( float thrust )
-                { this -> auxiliaryThrust_ = thrust; }
-
-            inline void setRotationThrust (float thrust)
-                { this -> rotationThrust_ = thrust;}
-            // Hint: auxiliary thrust, rotation thrust.
-            
-            /**
-            @brief Gets the primary thrust to the input amount.
-            @return The amount of thrust.
-            */
-            inline float getPrimaryThrust()
-                { return this->primaryThrust_; }
-
-            inline float getAuxiliaryThrust()
-                { return this->auxiliaryThrust_;}
-
-            inline float getRotationThrust()
-                { return this->rotationThrust_;}
-
-            //TODO: Place your get-functions here.
-
-        private:
-            //ArrowController *myController_; //!< The controller of the Arrow.
-
-            btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the Arrow the next tick.
-            btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the Arrow the next tick.
-            float primaryThrust_; //!< The amount of primary thrust. This is just used, when moving forward.
-            float auxiliaryThrust_; //!< The amount of auxiliary thrust. Used for all other movements (except for rotations).
-            float rotationThrust_; //!< The amount of rotation thrust. Used for rotations only.s
-        
+            virtual ~Arrow() = default;
     };
 
