[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