[Orxonox-commit 7157] r11774 - in code/branches/Presentation_HS17_merge: . data/levels data/overlays src/modules/overlays/hud src/modules/questsystem src/orxonox/controllers src/orxonox/graphics src/orxonox/worldentities

landauf at orxonox.net landauf at orxonox.net
Sun Feb 18 18:42:50 CET 2018


Author: landauf
Date: 2018-02-18 18:42:50 +0100 (Sun, 18 Feb 2018)
New Revision: 11774

Added:
   code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw
   code/branches/Presentation_HS17_merge/data/overlays/HUDTemplate_test.oxo
   code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.cc
   code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.h
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.cc
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.h
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/WaypointArrow.cc
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/WaypointArrow.h
   code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc
   code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h
   code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.cc
   code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.h
Modified:
   code/branches/Presentation_HS17_merge/
   code/branches/Presentation_HS17_merge/data/levels/emptyLevel.oxw
   code/branches/Presentation_HS17_merge/data/levels/tutorial.oxw
   code/branches/Presentation_HS17_merge/src/modules/overlays/hud/CMakeLists.txt
   code/branches/Presentation_HS17_merge/src/modules/questsystem/Quest.cc
   code/branches/Presentation_HS17_merge/src/orxonox/controllers/CMakeLists.txt
   code/branches/Presentation_HS17_merge/src/orxonox/graphics/Model.cc
   code/branches/Presentation_HS17_merge/src/orxonox/worldentities/CMakeLists.txt
Log:
merged Waypoints_HS17

Index: code/branches/Presentation_HS17_merge
===================================================================
--- code/branches/Presentation_HS17_merge	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge	2018-02-18 17:42:50 UTC (rev 11774)

Property changes on: code/branches/Presentation_HS17_merge
___________________________________________________________________
Modified: svn:mergeinfo
## -18,6 +18,7 ##
 /code/branches/SpaceRace_HS16:11214-11357
 /code/branches/StoryModeMap_HS16:11221-11358
 /code/branches/SuperOrxoBros_FS17:11365-11448
+/code/branches/Waypoints_HS17:11496-11773
 /code/branches/ai:6592-7033
 /code/branches/ai2:8721-8880
 /code/branches/bigships:8137-8588
Copied: code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw (from rev 11773, code/branches/Waypoints_HS17/data/levels/ArrowLevel.oxw)
===================================================================
--- code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/data/levels/ArrowLevel.oxw	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,78 @@
+<LevelInfo
+ name = "ArrowLevel"
+ description = "A level to show the funtionality of the Waypoint Arrow."
+ tags = "test"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+  include("stats.oxo")
+  include("HUDTemplates3.oxo")
+  include("templates/lodInformation.oxt")
+  include("templates/HeavyCruiser.oxt")
+?>
+
+<?lua
+  include("templates/spaceshipEscort.oxt")
+  include("templates/endurancetest_template.oxt")
+  include("templates/endurancetest_template.oxt")
+  include("templates/spaceshipPirate.oxt")
+  include("templates/spaceshipAssff.oxt")
+
+
+?>
+
+<Level>
+  <templates>
+    <Template link=lodtemplate_default />
+  </templates>
+  <?lua include("includes/notifications.oxi") ?>
+
+  <NotificationQueueCEGUI
+    name="narrative"
+    targets="simpleNotification"
+    size=3
+    displayTime=3.9
+    position="0.2, 0, 0.1, 0"
+    fontSize="23"
+    fontColor="0.3, 1, 0.2, 0.8"
+    alignment="HorzCentred"
+    displaySize="0.6, 0, 0, 0"
+    />
+
+   <Scene
+   ambientlight = "0.5, 0.5, 0.5"
+   skybox       = "Orxonox/Starbox"
+  >
+
+
+    <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
+
+
+    
+    <SpawnPoint position="50,0,0" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+
+    
+    
+    <Arrow>
+      <attached>
+       <Model scale="10" mesh="arrow.mesh"/>
+      </attached>
+    </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>
+
+
+
+
+  </Scene>
+</Level>
+

Modified: code/branches/Presentation_HS17_merge/data/levels/emptyLevel.oxw
===================================================================
--- code/branches/Presentation_HS17_merge/data/levels/emptyLevel.oxw	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/data/levels/emptyLevel.oxw	2018-02-18 17:42:50 UTC (rev 11774)
@@ -13,6 +13,11 @@
 
 <?lua
   include("templates/spaceshipEscort.oxt")
+  include("templates/endurancetest_template.oxt")
+  include("templates/spaceshipPirate.oxt")
+  include("templates/spaceshipAssff.oxt")
+
+
 ?>
 
 <Level>
@@ -21,14 +26,31 @@
   </templates>
   <?lua include("includes/notifications.oxi") ?>
 
-  <Scene
-    ambientlight = "0.8, 0.8, 0.8"
-    skybox       = "Orxonox/Starbox"
+  <NotificationQueueCEGUI
+    name="narrative"
+    targets="simpleNotification"
+    size=3
+    displayTime=3.9
+    position="0.2, 0, 0.1, 0"
+    fontSize="23"
+    fontColor="0.3, 1, 0.2, 0.8"
+    alignment="HorzCentred"
+    displaySize="0.6, 0, 0, 0"
+    />
+
+   <Scene
+   ambientlight = "0.5, 0.5, 0.5"
+   skybox       = "Orxonox/Starbox"
   >
 
-    <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
-    <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort />
+
+    <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
+
+
     
+    <SpawnPoint position="50,0,0" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+
   </Scene>
 </Level>
 

Modified: code/branches/Presentation_HS17_merge/data/levels/tutorial.oxw
===================================================================
--- code/branches/Presentation_HS17_merge/data/levels/tutorial.oxw	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/data/levels/tutorial.oxw	2018-02-18 17:42:50 UTC (rev 11774)
@@ -1,9 +1,8 @@
 <LevelInfo
  name = "Coding Tutorial"
  description = "Level for the coding tutorial."
- tags = "tutorial, shipselection"
+ tags = "tutorial"
  screenshot = "codingtutorial.png"
- startingships = "spaceshipassff, spaceshipghost, spaceshipspacecruiser"
 />
 
 <?lua
@@ -10,8 +9,6 @@
   include("HUDTemplates3.oxo")
   include("stats.oxo")
   include("templates/spaceshipAssff.oxt")
-  include("templates/spaceshipGhost.oxt")
-  include("templates/spaceshipSpacecruiser.oxt")
   include("templates/lodInformation.oxt")
 ?>
 
@@ -23,89 +20,34 @@
 
   <Scene
    ambientlight = "0.5, 0.5, 0.5"
-   skybox       = "Orxonox/skyBoxBasic"
+   skybox       = "Orxonox/Starbox"
   >
-<Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7">
-  <attached>
-    <Model scale="1" mesh="drone.mesh"/>
-  </attached>
-  <collisionShapes>
-    <BoxCollisionShape position="0,0,0"      halfExtents="10, 10, 10" />
-  </collisionShapes>
-</Drone>
 
-    <Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7">
-      <attached>
-        <Model scale="1" mesh="rocket.mesh"/>
-      </attached>
-      <collisionShapes>
-        <BoxCollisionShape position="0,0,0"      halfExtents="10, 10, 10" />
-      </collisionShapes>
-    </Drone>
 
     <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
 
-    <Model mesh="hs-w01.mesh" scale=10 position="0,0,-100" />
-    <Model mesh="hs-w01s.mesh" scale=10 position="0,0,-100" />
 
     <?lua
       for i = 1, 10, 1 do
     ?>
-      <SpawnPoint position="<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>" lookat="0,0,0" spawnclass=SpaceShip pawndesign=shipselection />
+      <SpawnPoint position="<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
     <?lua end ?>
 
-    <GlobalShader compositor="Bloom" visible=false>
-      <events>
-        <visibility>
-          <DistanceTrigger position="0,0,0" distance=30 target="Spectator" switch=true />
-        </visibility>
-      </events>
-    </GlobalShader>
-    <Model position="0,0,0" scale=8 mesh="ast1.mesh" />
-    <StaticEntity position="0,0,0" collisionType=static>
+    
+    <AutonomousDroneController>
+    </AutonomousDroneController>
+    
+    <AutonomousDrone mass=50 linearDamping=0.9 angularDamping=0.7>
+       <attached>
+        <Model scale="10" mesh="drone.mesh"/>
+      </attached>
+      
       <collisionShapes>
-        <SphereCollisionShape radius="20" />
+        <BoxCollisionShape position="0,0,0" halfExtents="10, 10, 10" />
       </collisionShapes>
-    </StaticEntity>
+    </AutonomousDrone>
 
-<!--
-    <?lua
-      for i = 1, 70, 1 do
-    ?>
-      <MovableEntity position="<?lua print(math.random() * 6000 - 3000)?>, <?lua print(math.random() * 6000 - 3000) ?>, <?lua print(math.random() * 1000 + 3000) ?>" rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>">
-        <attached>
-          <Model scale="<?lua print(math.random() * 30 + 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false />
-        </attached>
-      </MovableEntity>
-      <MovableEntity position="<?lua print(math.random() * 6000 - 3000)?>, <?lua print(math.random() * 6000 - 3000) ?>, <?lua print(math.random() * -1000 - 3000) ?>" rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>">
-        <attached>
-          <Model scale="<?lua print(math.random() * 30 + 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false />
-        </attached>
-      </MovableEntity>
 
-      <MovableEntity position="<?lua print(math.random() * 6000 - 3000)?>, <?lua print(math.random() * 1000 + 3000) ?>, <?lua print(math.random() * 6000 - 3000) ?>" rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>">
-        <attached>
-          <Model scale="<?lua print(math.random() * 30 + 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false />
-        </attached>
-      </MovableEntity>
-      <MovableEntity position="<?lua print(math.random() * 6000 - 3000)?>, <?lua print(math.random() * -1000 - 3000) ?>, <?lua print(math.random() * 6000 - 3000) ?>" rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>">
-        <attached>
-          <Model scale="<?lua print(math.random() * 30 + 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false />
-        </attached>
-      </MovableEntity>
 
-      <MovableEntity position="<?lua print(math.random() * 1000 + 3000)?>, <?lua print(math.random() * 6000 - 3000) ?>, <?lua print(math.random() * 6000 - 3000) ?>" rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>">
-        <attached>
-          <Model scale="<?lua print(math.random() * 30 + 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false />
-        </attached>
-      </MovableEntity>
-      <MovableEntity position="<?lua print(math.random() * -1000 - 3000)?>, <?lua print(math.random() * 6000 - 3000) ?>, <?lua print(math.random() * 6000 - 3000) ?>" rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>">
-        <attached>
-          <Model scale="<?lua print(math.random() * 30 + 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false />
-        </attached>
-      </MovableEntity>
-    <?lua end ?>
--->
-
   </Scene>
 </Level>

Copied: code/branches/Presentation_HS17_merge/data/overlays/HUDTemplate_test.oxo (from rev 11773, code/branches/Waypoints_HS17/data/overlays/HUDTemplate_test.oxo)
===================================================================
--- code/branches/Presentation_HS17_merge/data/overlays/HUDTemplate_test.oxo	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/data/overlays/HUDTemplate_test.oxo	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,226 @@
+<!--
+<Template name="defaultHUD">
+  <OverlayGroup name = "defaultHUD" scale = "1, 1">
+    <ChatOverlay
+     name     = "chat"
+     position = "0.03, 0.5"
+     font     = "VeraMono"
+     caption  = ""
+     textsize = 0.025
+    />
+
+    <GametypeStatus
+     name     = "state"
+     position = "0.5, 0.85"
+     font     = "VeraMono"
+     textsize = 0.05
+     colour   = "1.0, 1.0, 0.0, 0.8"
+     align    = "center"
+    />
+  </OverlayGroup>
+</Template>
+-->
+
+<Template name="spectatorhud">
+  <OverlayGroup name = "spectatorhud" scale = "1, 1">
+  </OverlayGroup>
+</Template>
+
+<Template name="rockethud">
+  <OverlayGroup name = "rockethud" scale = "1, 1">
+    <HUDRocketFuelBar
+     name          = "RocketFuelBar1"
+     background    = "Orxonox/BarBackground"
+     size          = "0.40, 0.04"
+     position      = "0.0 , 1.0 "
+     pickpoint     = "0, 1"
+     correctaspect = true
+     iconmaterial  = "Orxonox/BarIconFuel"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+    </HUDRocketFuelBar>
+  </OverlayGroup>
+</Template>
+
+<Template name="spaceshiphud">
+  <OverlayGroup name = "spaceshiphud" scale = "1, 1">
+    <Map />
+
+    <HUDHealthBar
+     name              = "HealthBar1"
+     background        = "Orxonox/HealthBarBackground"
+     size              = "0.40, 0.08"
+     position          = "0.0 , 0.85 "
+     pickpoint         = "0, 1"
+     bartexture        = "healthbar_bar.png"
+     textfont          = "VeraMono"
+     textusebarcolour  = true
+     textscale          = 0.4
+     textoffset        = "0.325, -0.825"
+     textpickpoint     = "0, 0"
+     textalign         = "right"
+     correctaspect     = true
+     iconmaterial      = "Orxonox/BarIconHealth"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+    </HUDHealthBar>
+
+    <HUDShieldBar
+     name          = "ShieldBar1"
+     background    = "Orxonox/BarBackground"
+     size          = "0.40, 0.04"
+     position      = "0.0 , 0.9 "
+     pickpoint     = "0, 1"
+     correctaspect = true
+     iconmaterial  = "Orxonox/BarIconShield"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+    </HUDShieldBar>    
+
+    <HUDSpeedBar
+     name          = "SpeedBar1"
+     background    = "Orxonox/BarBackground"
+     size          = "0.40, 0.04"
+     position      = "0.0 , 0.95 "
+     pickpoint     = "0, 1"
+     correctaspect = true
+     iconmaterial  = "Orxonox/BarIconSpeed"
+     >
+      <BarColour position = 0.0 colour = "0.7,0.5,0.2" />
+      <BarColour position = 0.5 colour = "0.2,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.7,0.2,0.2" />
+    </HUDSpeedBar>
+
+    <HUDBoostBar
+     name          = "BoostBar1"
+     background    = "Orxonox/BarBackground"
+     size          = "0.40, 0.04"
+     position      = "0.0 , 1.0 "
+     pickpoint     = "0, 1"
+     correctaspect = true
+     iconmaterial  = "Orxonox/BarIconBoost"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+    </HUDBoostBar>
+
+    <HUDEnemyHealthBar
+     name              = "EnemyHealthBar"
+     background        = "Orxonox/HealthBarBackground"
+     size              = "0.4, 0.08"
+     position          = "1 ,0"
+     pickpoint         = "1, 0"
+     bartexture        = "healthbar_bar.png"
+     textfont          = "VeraMono"
+     textusebarcolour  = true
+     textscale         = 0.4
+     textoffset        = "-0.675, 0.175"
+     textpickpoint     = "0, 0"
+     textalign         = "right"
+     correctaspect     = true
+     iconmaterial      = "Orxonox/BarIconHealth"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+    </HUDEnemyHealthBar>
+
+    <HUDEnemyShieldBar
+     name          = "EnemyShieldBar1"
+     background    = "Orxonox/BarBackground"
+     size          = "0.40, 0.04"
+     position      = "1.0 , 0.1 "
+     pickpoint     = "1, 0"
+     correctaspect = true
+     iconmaterial  = "Orxonox/BarIconShield"
+    >
+      <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+      <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+    </HUDEnemyShieldBar>   
+
+    <HUDNavigation
+     name          = "Navigation"
+     correctaspect = true
+     font          = "Monofur"
+     textsize      = 0.02
+     navMarkerSize = 0.03
+     aimMarkerSize = 0.02
+    />
+
+	<HUDRadar
+     name          			= "Radar"
+     background    			= "Orxonox/Radar3D"
+     material2D    			= "Orxonox/Radar"
+     material3DMiddle   	= "Orxonox/Radar3D"
+     material3DFront		= "Orxonox/Radar3DFront"
+     material3DBack			= "Orxonox/Radar3DBack"
+     correctaspect 			= true
+     size          			= "0.17, 0.17"
+     position      			= "1.0, 1.0"
+     pickpoint     			= "1.0, 1.0"
+     rotation      			= 0
+     sensitivity   			= 1.0
+     halfDotSizeDistance 	= 3000
+     detectionLimit 		= 10000.0
+     maximumDotSize 		= 0.1
+     maximumDotSize3D      	= 0.06
+     mapAngle3D   			= 0.6435011
+    />
+
+    <HUDWeaponSystem
+     name                   = "WeaponSystem"
+     correctaspect          = true
+     position               = "0.01, 0.01"
+     pickpoint              = "0, 0"
+     visible                = "true"
+     weaponModeHUDSize      = "0.09, 0.03"
+    />
+    
+    <HUDPickupSystem
+     name                   = "PickupSystem"
+     correctaspect          = true
+     position               = "0.32, 0.81"
+     pickpoint              = "0.0, 0.0"
+     visible                = "false"
+    />
+
+    <HUDWaypoints
+     name                   = "Waypoints"
+     correctaspect          = true
+     position               = "0.32, 0.81"
+     pickpoint              = "0.0, 0.0"
+     visible                = "true"
+    />
+
+
+    <HUDTimer
+     name     = "Timer"
+     position = "0.5, 0.25"
+     font     = "VeraMono"
+     textsize = 0.1
+     colour   = "1.0, 1.0, 0.0, 0.8"
+     align    = "center"
+    />
+
+    <GUIOverlay
+      name = "QuestGUI"
+      guiname = "QuestGUI"
+      visible = "false"
+    />
+    
+    <GUIOverlay
+      name = "PickupInventory"
+      guiname = "PickupInventory"
+      visible = "false"
+    />
+
+  </OverlayGroup>
+</Template>

Modified: code/branches/Presentation_HS17_merge/src/modules/overlays/hud/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/overlays/hud/CMakeLists.txt	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/src/modules/overlays/hud/CMakeLists.txt	2018-02-18 17:42:50 UTC (rev 11774)
@@ -10,6 +10,7 @@
   HUDTimer.cc
   HUDEnemyHealthBar.cc
   HUDEnemyShieldBar.cc
+  HUDWaypoints.cc
   HUDWeaponMode.cc
   HUDWeapon.cc
   HUDWeaponSystem.cc

Copied: code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.cc (from rev 11773, code/branches/Waypoints_HS17/src/modules/overlays/hud/HUDWaypoints.cc)
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.cc	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,42 @@
+
+
+
+
+#include <vector>
+#include <string>
+
+#include "HUDWaypoints.h"
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Convert.h"
+#include "core/class/Super.h"
+#include "pickup/Pickup.h"
+#include "HUDPickupItem.h"
+#include "pickup/PickupManager.h"
+
+namespace orxonox 
+{
+	RegisterClass(HUDWaypoints);
+
+		HUDWaypoints::HUDWaypoints(Context* context) : OrxonoxOverlay(context)
+    {
+        RegisterObject(HUDWaypoints);
+
+        overlayElement_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDWaypoints" + getUniqueNumberString()));
+        overlayElement_->setMaterialName("PickupBar");
+        overlayElement_->setPosition(0.0f,0.0f);
+        overlayElement_->setDimensions(0.35f,0.075f);
+        this->background_->addChild(overlayElement_);
+    }
+
+
+    HUDWaypoints::~HUDWaypoints()
+    {
+       /* if (this->isInitialized())
+        {
+            this->picks.clear();
+        }*/
+    }
+
+
+}
\ No newline at end of file

Copied: code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.h (from rev 11773, code/branches/Waypoints_HS17/src/modules/overlays/hud/HUDWaypoints.h)
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.h	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/modules/overlays/hud/HUDWaypoints.h	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,69 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Patrick Wintermeyer
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+#ifndef _HUDWaypoints_H__
+#define _HUDWaypoints_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include <map>
+#include <vector>
+#include <string>
+
+
+#include <OgreOverlayManager.h>
+#include <OgrePanelOverlayElement.h> 
+
+#include "overlays/OrxonoxOverlay.h"
+#include "worldentities/pawns/Pawn.h"
+#include "overlays/OverlayGroup.h"
+#include "pickup/Pickup.h"
+#include "pickup/PickupRepresentation.h"
+#include "HUDPickupItem.h"
+
+namespace orxonox
+{
+    class _OverlaysExport HUDWaypoints : public OrxonoxOverlay
+    {
+    public:
+        HUDWaypoints(Context* context);
+        virtual ~HUDWaypoints();
+
+        bool repaint=false; //if we shouldnt repaint, set this to false
+
+    private:
+
+        Ogre::PanelOverlayElement* overlayElement_;
+        WeakPtr<Pawn> owner_;
+
+        std::vector<PickupRepresentation> pickupRepresentations_;
+    };
+}
+
+#endif
\ No newline at end of file

Modified: code/branches/Presentation_HS17_merge/src/modules/questsystem/Quest.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/questsystem/Quest.cc	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/src/modules/questsystem/Quest.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -79,10 +79,21 @@
         XMLPortObject(Quest, QuestHint, "hints", addHint, getHint, xmlelement, mode);
         XMLPortObject(Quest, QuestEffect, "fail-effects", addFailEffect, getFailEffect, xmlelement, mode);
         XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffect, xmlelement, mode);
+        //XMLPortObject(Quest, Worldentity, "arrowtarget", addArrowTarget, getArrowTarget, xmlelement, mode);
 
         QuestManager::getInstance().registerQuest(this); // Registers the Quest with the QuestManager.
     }
 
+
+    /*bool Quest::addArrowTarget(Quest* quest){
+
+        assert(quest);
+
+
+    }*/
+
+
+
     /**
     @brief
         Sets the parent-quest of the Quest.

Copied: code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/controllers/ArrowController.cc)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,156 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#include "ArrowController.h"
+#include "HumanController.h"
+#include "worldentities/WorldEntity.h"
+    
+#include "worldentities/Arrow.h"
+#include "util/Math.h"
+
+namespace orxonox
+{
+
+    RegisterClass(ArrowController);
+
+
+
+    /**
+    @brief
+        Constructor.
+    */
+    ArrowController::ArrowController(Context* context) : Controller(context)
+    {
+
+        RegisterObject(ArrowController);
+
+        this->currentGPSPoint_ = 0;
+        this->accuracy_ = 1000.0f;
+
+        arrow = nullptr;
+
+        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){
+      this->accuracy_ = accuracy;
+    }
+
+    float ArrowController::getAccuracy(){
+      return this->accuracy_;
+    };
+    
+    void ArrowController::addGPSPoint(WorldEntity* gpspoint)
+    {
+        this->gpspoints_.push_back(gpspoint);
+    }
+
+    WorldEntity* ArrowController::getGPSPoint(unsigned int index) const
+    {
+        if (index < this->gpspoints_.size())
+            return this->gpspoints_[index];
+        else
+            return nullptr;
+    }
+    /**
+    @brief
+        Destructor.
+    */
+
+    ArrowController::~ArrowController()
+    {
+      for (WorldEntity* gpspoint : this->gpspoints_)
+        {
+            if(gpspoint)
+                gpspoint->destroy();
+        } 
+
+    }
+
+
+    void ArrowController::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(ArrowController, XMLPort, xmlelement, mode);
+
+        XMLPortObject(ArrowController, WorldEntity, "gpspoints", addGPSPoint, getGPSPoint,  xmlelement, mode);
+        XMLPortParam(ArrowController, "accuracy", setAccuracy, getAccuracy, xmlelement, mode);
+    }
+
+    void ArrowController::tick(float dt)
+    {
+        if (!this->isActive())
+            return;
+
+        if (this->gpspoints_.size() == 0 || !this->getControllableEntity())
+            return;
+        //Set all waypoint to invisible at the beginning  
+        if (this->currentGPSPoint_ == 0){
+          for(unsigned int i = 0; i < this->gpspoints_.size(); i++ )
+            this->gpspoints_[i]->setVisible(false);
+        }
+        //Make the arrow inivisible as soon as you reached the last Waypoint, otherwise make the next waypoint visible 
+        if(currentGPSPoint_ >= gpspoints_.size()){
+          this->getControllableEntity()->setVisible(false);
+          return;
+        }
+        else this->gpspoints_[this->currentGPSPoint_]->setVisible(true);
+
+        //Set the next waypoint as target as soon as you reached the previous one
+        if (this->gpspoints_[this->currentGPSPoint_]->getWorldPosition().squaredDistance(this->getControllableEntity()->getPosition()) <= this->accuracy_){
+            this->gpspoints_[this->currentGPSPoint_]->setVisible(false);
+            this->currentGPSPoint_ = (this->currentGPSPoint_ + 1);
+            return;
+          }
+  
+        Vector3 target = gpspoints_[currentGPSPoint_]->getWorldPosition();
+        WorldEntity::TransformSpace trans = WorldEntity::TransformSpace::World;
+
+        //Get the position and orientation of the Spaceship
+        Vector3 spaceShipPosition = HumanController::getLocalControllerSingleton()->getControllableEntity()->getWorldPosition();
+        Quaternion spaceShipOrientation = HumanController::getLocalControllerSingleton()->getControllableEntity()->getOrientation();
+        
+        //Calculate the new arrow position
+        Vector3 ss_y = spaceShipOrientation.yAxis();
+        spaceShipPosition.x += 20 * ss_y.x;
+        spaceShipPosition.y += 20 * ss_y.y;
+        spaceShipPosition.z += 20 * ss_y.z;
+        
+        //Update Arrow position and orientation  
+        this->getControllableEntity()->setPosition(spaceShipPosition);
+        this->getControllableEntity()->lookAt(target, trans, Vector3(0,0,1));
+        
+        
+    }
+}

Copied: code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/controllers/ArrowController.h)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/controllers/ArrowController.h	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,73 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#ifndef _ArrowController_H__
+#define _ArrowController_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "Controller.h"
+#include "tools/interfaces/Tickable.h"
+#include "worldentities/Arrow.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Controller for the Arrow of the PPS tutorial.
+    @author
+        Oli Scheuss
+    */
+    class _OrxonoxExport ArrowController : public Controller, public Tickable
+    {
+        public:
+            ArrowController(Context* context);
+            virtual ~ArrowController();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            
+            void addGPSPoint(WorldEntity* gpspoint);
+            WorldEntity* getGPSPoint(unsigned int index) const;
+            void setAccuracy(float accuracy);
+            float getAccuracy();
+
+            virtual void tick(float dt); //!< The controlling happens here. This method defines what the controller has to do each tick.
+
+        protected:
+
+            std::vector<WeakPtr<WorldEntity>> gpspoints_;
+            size_t currentGPSPoint_;
+            float accuracy_;
+            WorldEntity* defaultGPSpoint_;
+
+        private:
+            Arrow *arrow;
+    };
+}
+
+#endif /* _ArrowController_H__ */

Copied: code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.cc (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/controllers/AutonomousDroneController.cc)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.cc	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,111 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#include "AutonomousDroneController.h"
+
+#include "worldentities/AutonomousDrone.h"
+#include "util/Math.h"
+
+namespace orxonox
+{
+    //TODO: Put your code in here:
+    // Create the factory for the drone controller.
+    RegisterClass(AutonomousDroneController);
+
+
+    /**
+    @brief
+        Constructor.
+    @param context
+        The context of this object.
+    */
+    AutonomousDroneController::AutonomousDroneController(Context* context) : Controller(context)
+    {
+        //TODO: Place your code here:
+        RegisterObject(AutonomousDroneController);
+
+
+        // Make sure to register the object and create the factory.        
+
+        // This checks that our context really is a drone
+        // and saves the pointer to the drone for the controlling commands
+        /* NOTE from Sandro: This is currently broken */
+        //AutonomousDrone* drone = dynamic_cast<AutonomousDrone*>(context);
+        //assert(drone != nullptr);
+        //this->setControllableEntity(drone);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    AutonomousDroneController::~AutonomousDroneController()
+    {
+
+    }
+
+    /**
+    @brief
+        The controlling happens here. This method defines what the controller has to do each tick.
+    @param dt
+        The duration of the tick.
+    */
+    void AutonomousDroneController::tick(float dt)
+    {
+        /* NOTE: Ugly hack by Sandro to make the tutorial work for the moment.
+         * This will be reverted once the framework update is complete
+         */
+        //AutonomousDrone *myDrone = static_cast<AutonomousDrone*>(this->getControllableEntity());
+        ObjectList<AutonomousDrone> objectList;
+        ObjectList<AutonomousDrone>::iterator it = objectList.begin();
+        AutonomousDrone* myDrone = *it;
+
+        if (myDrone != nullptr)
+        {
+
+           
+            //myDrone -> moveFrontBack(50*dt);
+            myDrone -> rotateRoll(2*dt);
+            
+            myDrone -> rotateYaw(2*dt);
+            
+                
+            //TODO: Place your code here:
+            // Steering commands
+            // You can use the commands provided by the AutonomousDrone to steer it:
+            // - moveFrontBack, moveRightLeft, moveUpDown
+            // - rotatePitch, rotateYaw, rotateRoll
+            // You will see, that the AutonomousDrone has two variants for each of these commands, one with a vector as input and one with just a float. Use the one with just the float as input.
+            // Apply them to myDrone (e.g. myDrone->rotateYaw(..) )
+            // dt is the time passed since the last call of the tick function in seconds.
+
+
+
+        }
+    }
+}

Copied: code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.h (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/controllers/AutonomousDroneController.h)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.h	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/controllers/AutonomousDroneController.h	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,59 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#ifndef _AutonomousDroneController_H__
+#define _AutonomousDroneController_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "Controller.h"
+#include "tools/interfaces/Tickable.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Controller for the AutonomousDrone of the PPS tutorial.
+    @author
+        Oli Scheuss
+    */
+    class _OrxonoxExport AutonomousDroneController : public Controller, public Tickable
+    {
+        public:
+            AutonomousDroneController(Context* context);
+            virtual ~AutonomousDroneController();
+
+            virtual void tick(float dt); //!< The controlling happens here. This method defines what the controller has to do each tick.
+
+        protected:
+
+        private:
+    };
+}
+
+#endif /* _AutonomousDroneController_H__ */

Modified: code/branches/Presentation_HS17_merge/src/orxonox/controllers/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/controllers/CMakeLists.txt	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/src/orxonox/controllers/CMakeLists.txt	2018-02-18 17:42:50 UTC (rev 11774)
@@ -18,4 +18,6 @@
   FlyingController.cc
   FightingController.cc
   MasterController.cc
+  AutonomousDroneController.cc
+  ArrowController.cc
 )

Copied: code/branches/Presentation_HS17_merge/src/orxonox/controllers/WaypointArrow.cc (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/controllers/WaypointArrow.cc)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/controllers/WaypointArrow.cc	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/controllers/WaypointArrow.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,67 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "WaypointArrow.h"
+
+#include "core/CoreIncludes.h"
+#include "worldentities/ControllableEntity.h"
+
+namespace orxonox
+{
+    RegisterClass(WaypointArrow);
+
+    WaypointArrow::WaypointArrow(Context* context) : ArtificialController(context)
+    {
+        RegisterObject(WaypointController);
+        this->setAccuracy(100);
+    }
+
+    WaypointController::~WaypointController()
+    {
+        for (WorldEntity* waypoint : this->waypoints_)
+        {
+            if(waypoint)
+                waypoint->destroy();
+        }
+    }
+
+    void WaypointController::tick(float dt)
+    {
+        if (!this->isActive())
+            return;
+
+        if (this->waypoints_.size() == 0 || !this->getControllableEntity())
+            return;
+
+        if (this->waypoints_[this->currentWaypoint_]->getWorldPosition().squaredDistance(this->getControllableEntity()->getPosition()) <= this->squaredaccuracy_)
+            this->currentWaypoint_ = (this->currentWaypoint_ + 1) % this->waypoints_.size();
+
+        this->moveToPosition(this->waypoints_[this->currentWaypoint_]->getWorldPosition());
+    }
+
+}

Copied: code/branches/Presentation_HS17_merge/src/orxonox/controllers/WaypointArrow.h (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/controllers/WaypointArrow.h)
===================================================================
Modified: code/branches/Presentation_HS17_merge/src/orxonox/graphics/Model.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/graphics/Model.cc	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/src/orxonox/graphics/Model.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -70,7 +70,6 @@
         SUPER(Model, XMLPort, xmlelement, mode);
 
         XMLPortParam(Model, "lodLevel", setLodLevel, getLodLevel, xmlelement, mode);
-
         XMLPortParam(Model, "mesh", setMeshSource, getMeshSource, xmlelement, mode);
         XMLPortParam(Model, "renderQueueGroup", setRenderQueueGroup, getRenderQueueGroup, xmlelement, mode);
         XMLPortParam(Model, "material", setMaterial, getMaterial, xmlelement, mode);

Copied: code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/worldentities/Arrow.cc)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,174 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#include "Arrow.h"
+
+#include "core/CoreIncludes.h"
+#include "BulletDynamics/Dynamics/btRigidBody.h"
+
+namespace orxonox
+{
+
+    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);
+    }
+
+
+}

Copied: code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/worldentities/Arrow.h)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/worldentities/Arrow.h	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,147 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#ifndef _Arrow_H__
+#define _Arrow_H__
+
+#include "OrxonoxPrereqs.h"
+
+#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
+        
+    };
+
+}
+
+#endif // _Arrow_H__

Copied: code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.cc (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/worldentities/AutonomousDrone.cc)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.cc	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.cc	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,186 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#include "AutonomousDrone.h"
+
+#include "core/CoreIncludes.h"
+#include "BulletDynamics/Dynamics/btRigidBody.h"
+
+namespace orxonox
+{
+    //TODO: Put your code in here:
+    // Create the factory for the drone.
+    RegisterClass(AutonomousDrone);
+    /**
+    @brief
+        Constructor. Registers the object and initializes some default values.
+    @param creator
+        The creator of this object.
+    */
+    AutonomousDrone::AutonomousDrone(Context* context) : ControllableEntity(context)
+    {
+        //TODO: Put your code in here:
+        // Register the drone class to the core.
+        RegisterObject(AutonomousDrone);
+
+        this->myController_ = NULL;
+
+        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);
+
+        //this->myController_ = new AutonomousDroneController(this); // Creates a new controller and passes our this pointer to it as creator.
+    }
+
+    /**
+    @brief
+        Destructor. Destroys controller, if present.
+    */
+    AutonomousDrone::~AutonomousDrone()
+    {
+        // Deletes the controller if the object was initialized and the pointer to the controller is not NULL.
+        if( this->isInitialized() && this->myController_ != NULL )
+            delete this->myController_;
+    }
+
+    /**
+    @brief
+        Method for creating a AutonomousDrone through XML.
+    */
+    void AutonomousDrone::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        // This calls the XMLPort function of the parent class
+        SUPER(AutonomousDrone, XMLPort, xmlelement, mode);
+
+        XMLPortParam(AutonomousDrone, "primaryThrust", setPrimaryThrust, getPrimaryThrust, xmlelement, mode);
+        //TODO: Put your code in here:
+        XMLPortParam(AutonomousDrone, "auxiliaryThrust", setAuxiliaryThrust, getAuxiliaryThrust, xmlelement, mode);
+        XMLPortParam(AutonomousDrone, "rotationThrust", setRotationThrust, getRotationThrust, xmlelement, mode);
+        // Make sure you add the variables auxiliaryThrust_ and rotationThrust_ to XMLPort.
+        // Variables can be added by the following command
+        // XMLPortParam(Classname, "xml-attribute-name (i.e. variablename)", setFunctionName, getFunctionName, xmlelement, mode);
+        // Also make sure that you also create the get- and set-functions in AutonomousDrone.h. As you can see, the get- and set-functions for the variable primaryThrust_ has already been specified there, so you can get your inspiration from there.
+        
+
+    }
+
+    /**
+    @brief
+        Defines which actions the AutonomousDrone has to take in each tick.
+    @param dt
+        The length of the tick.
+    */
+    void AutonomousDrone::tick(float dt)
+    {
+        SUPER(AutonomousDrone, 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 AutonomousDrone 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 AutonomousDrone::moveFrontBack(const Vector2& value)
+    {
+        this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() - value.x);
+    }
+
+    /**
+    @brief
+        Moves the AutonomousDrone 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 AutonomousDrone::moveRightLeft(const Vector2& value)
+    {
+        this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() + value.x);
+    }
+
+    /**
+    @brief
+        Moves the AutonomousDrone 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 AutonomousDrone::moveUpDown(const Vector2& value)
+    {
+        this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() + value.x);
+    }
+
+    /**
+    @brief
+        Rotates the AutonomousDrone 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 AutonomousDrone::rotateYaw(const Vector2& value)
+    {
+        this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() - value.x);
+    }
+
+    /**
+    @brief
+        Rotates the AutonomousDrone 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 AutonomousDrone::rotatePitch(const Vector2& value)
+    {
+        this->localAngularAcceleration_.setX(this->localAngularAcceleration_.x() + value.x);
+    }
+
+    /**
+    @brief
+        Rotates the AutonomousDrone 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 AutonomousDrone::rotateRoll(const Vector2& value)
+    {
+        this->localAngularAcceleration_.setZ(this->localAngularAcceleration_.z() + value.x);
+    }
+
+}

Copied: code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.h (from rev 11773, code/branches/Waypoints_HS17/src/orxonox/worldentities/AutonomousDrone.h)
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.h	                        (rev 0)
+++ code/branches/Presentation_HS17_merge/src/orxonox/worldentities/AutonomousDrone.h	2018-02-18 17:42:50 UTC (rev 11774)
@@ -0,0 +1,146 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oli Scheuss
+ *   Co-authors:
+ *      Damian 'Mozork' Frick
+ *
+ */
+
+#ifndef _AutonomousDrone_H__
+#define _AutonomousDrone_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "core/XMLPort.h"
+#include "controllers/AutonomousDroneController.h"
+
+#include "ControllableEntity.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 AutonomousDrone : public ControllableEntity
+    {
+        public:
+            AutonomousDrone(Context* context);
+            virtual ~AutonomousDrone();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating an AutonomousDrone through XML.
+            virtual void tick(float dt); //!< Defines which actions the AutonomousDrone 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:
+            AutonomousDroneController *myController_; //!< The controller of the AutonomousDrone.
+
+            btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the AutonomousDrone the next tick.
+            btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the AutonomousDrone 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
+        
+    };
+
+}
+
+#endif // _AutonomousDrone_H__

Modified: code/branches/Presentation_HS17_merge/src/orxonox/worldentities/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/orxonox/worldentities/CMakeLists.txt	2018-02-18 17:21:10 UTC (rev 11773)
+++ code/branches/Presentation_HS17_merge/src/orxonox/worldentities/CMakeLists.txt	2018-02-18 17:42:50 UTC (rev 11774)
@@ -13,6 +13,8 @@
   ExplosionPart.cc
   Actionpoint.cc
   NameableStaticEntity.cc
+  AutonomousDrone.cc
+  Arrow.cc
 )
 
 ADD_SUBDIRECTORY(pawns)
\ No newline at end of file



More information about the Orxonox-commit mailing list