[Orxonox-commit 7068] r11685 - in code/branches/Presentation_HS17: . data/levels data/overlays src/modules/overlays/hud src/orxonox/controllers src/orxonox/graphics src/orxonox/worldentities

patricwi at orxonox.net patricwi at orxonox.net
Sun Dec 17 14:35:53 CET 2017


Author: patricwi
Date: 2017-12-17 14:35:52 +0100 (Sun, 17 Dec 2017)
New Revision: 11685

Added:
   code/branches/Presentation_HS17/data/levels/ArrowLevel.oxw
   code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.cc
   code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.h
   code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.cc
   code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.h
   code/branches/Presentation_HS17/src/orxonox/controllers/WaypointArrow.cc
   code/branches/Presentation_HS17/src/orxonox/controllers/WaypointArrow.h
   code/branches/Presentation_HS17/src/orxonox/worldentities/Arrow.cc
   code/branches/Presentation_HS17/src/orxonox/worldentities/Arrow.h
   code/branches/Presentation_HS17/src/orxonox/worldentities/AutonomousDrone.cc
   code/branches/Presentation_HS17/src/orxonox/worldentities/AutonomousDrone.h
Modified:
   code/branches/Presentation_HS17/
   code/branches/Presentation_HS17/data/overlays/HUDTemplates3.oxo
   code/branches/Presentation_HS17/src/modules/overlays/hud/CMakeLists.txt
   code/branches/Presentation_HS17/src/orxonox/controllers/CMakeLists.txt
   code/branches/Presentation_HS17/src/orxonox/graphics/Model.cc
   code/branches/Presentation_HS17/src/orxonox/worldentities/CMakeLists.txt
Log:
files missing are ArrowController.cc and .h

Index: code/branches/Presentation_HS17
===================================================================
--- code/branches/Presentation_HS17	2017-12-16 19:52:37 UTC (rev 11684)
+++ code/branches/Presentation_HS17	2017-12-17 13:35:52 UTC (rev 11685)

Property changes on: code/branches/Presentation_HS17
___________________________________________________________________
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-11684
 /code/branches/ai:6592-7033
 /code/branches/ai2:8721-8880
 /code/branches/bigships:8137-8588
Copied: code/branches/Presentation_HS17/data/levels/ArrowLevel.oxw (from rev 11684, code/branches/Waypoints_HS17/data/levels/ArrowLevel.oxw)
===================================================================
--- code/branches/Presentation_HS17/data/levels/ArrowLevel.oxw	                        (rev 0)
+++ code/branches/Presentation_HS17/data/levels/ArrowLevel.oxw	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/Presentation_HS17/data/overlays/HUDTemplates3.oxo	2017-12-16 19:52:37 UTC (rev 11684)
+++ code/branches/Presentation_HS17/data/overlays/HUDTemplates3.oxo	2017-12-17 13:35:52 UTC (rev 11685)
@@ -189,7 +189,7 @@
      correctaspect          = true
      position               = "0.32, 0.81"
      pickpoint              = "0.0, 0.0"
-     visible                = "false"
+     visible                = "true"
     />
 
     <HUDTimer

Modified: code/branches/Presentation_HS17/src/modules/overlays/hud/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17/src/modules/overlays/hud/CMakeLists.txt	2017-12-16 19:52:37 UTC (rev 11684)
+++ code/branches/Presentation_HS17/src/modules/overlays/hud/CMakeLists.txt	2017-12-17 13:35:52 UTC (rev 11685)
@@ -10,6 +10,7 @@
   HUDTimer.cc
   HUDEnemyHealthBar.cc
   HUDEnemyShieldBar.cc
+  HUDWaypoints.cc
   HUDWeaponMode.cc
   HUDWeapon.cc
   HUDWeaponSystem.cc

Copied: code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.cc (from rev 11684, code/branches/Waypoints_HS17/src/modules/overlays/hud/HUDWaypoints.cc)
===================================================================
--- code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.cc	                        (rev 0)
+++ code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.cc	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/modules/overlays/hud/HUDWaypoints.h (from rev 11684, code/branches/Waypoints_HS17/src/modules/overlays/hud/HUDWaypoints.h)
===================================================================
--- code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.h	                        (rev 0)
+++ code/branches/Presentation_HS17/src/modules/overlays/hud/HUDWaypoints.h	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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

Copied: code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.cc (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/controllers/AutonomousDroneController.cc)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.cc	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.cc	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/controllers/AutonomousDroneController.h (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/controllers/AutonomousDroneController.h)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.h	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/controllers/AutonomousDroneController.h	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/controllers/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/controllers/CMakeLists.txt	2017-12-16 19:52:37 UTC (rev 11684)
+++ code/branches/Presentation_HS17/src/orxonox/controllers/CMakeLists.txt	2017-12-17 13:35:52 UTC (rev 11685)
@@ -18,4 +18,6 @@
   FlyingController.cc
   FightingController.cc
   MasterController.cc
+  AutonomousDroneController.cc
+  ArrowController.cc
 )

Copied: code/branches/Presentation_HS17/src/orxonox/controllers/WaypointArrow.cc (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/controllers/WaypointArrow.cc)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/controllers/WaypointArrow.cc	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/controllers/WaypointArrow.cc	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/controllers/WaypointArrow.h (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/controllers/WaypointArrow.h)
===================================================================
Modified: code/branches/Presentation_HS17/src/orxonox/graphics/Model.cc
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/graphics/Model.cc	2017-12-16 19:52:37 UTC (rev 11684)
+++ code/branches/Presentation_HS17/src/orxonox/graphics/Model.cc	2017-12-17 13:35:52 UTC (rev 11685)
@@ -72,7 +72,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/src/orxonox/worldentities/Arrow.cc (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/worldentities/Arrow.cc)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/worldentities/Arrow.cc	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/worldentities/Arrow.cc	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/worldentities/Arrow.h (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/worldentities/Arrow.h)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/worldentities/Arrow.h	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/worldentities/Arrow.h	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/worldentities/AutonomousDrone.cc (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/worldentities/AutonomousDrone.cc)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/worldentities/AutonomousDrone.cc	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/worldentities/AutonomousDrone.cc	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/worldentities/AutonomousDrone.h (from rev 11684, code/branches/Waypoints_HS17/src/orxonox/worldentities/AutonomousDrone.h)
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/worldentities/AutonomousDrone.h	                        (rev 0)
+++ code/branches/Presentation_HS17/src/orxonox/worldentities/AutonomousDrone.h	2017-12-17 13:35:52 UTC (rev 11685)
@@ -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/src/orxonox/worldentities/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17/src/orxonox/worldentities/CMakeLists.txt	2017-12-16 19:52:37 UTC (rev 11684)
+++ code/branches/Presentation_HS17/src/orxonox/worldentities/CMakeLists.txt	2017-12-17 13:35:52 UTC (rev 11685)
@@ -12,6 +12,8 @@
   TeamSpawnPoint.cc
   ExplosionPart.cc
   Actionpoint.cc
+  AutonomousDrone.cc
+  Arrow.cc
   NameableStaticEntity.cc
 )
 



More information about the Orxonox-commit mailing list