[Orxonox-commit 6689] r11318 - code/branches/QuestGuide_HS16/src/modules/waypoints
ooguz at orxonox.net
ooguz at orxonox.net
Mon Dec 5 15:59:38 CET 2016
Author: ooguz
Date: 2016-12-05 15:59:38 +0100 (Mon, 05 Dec 2016)
New Revision: 11318
Added:
code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointprereqs.h
Modified:
code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.cc
code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.h
code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.cc
code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.h
code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointarrow.cc
Log:
Distance Trigger Added
Modified: code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.cc
===================================================================
--- code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.cc 2016-12-05 14:59:27 UTC (rev 11317)
+++ code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.cc 2016-12-05 14:59:38 UTC (rev 11318)
@@ -1,10 +1,11 @@
#include "Waypoint.h"
-
#include <OgreSceneNode.h>
#include <BulletDynamics/Dynamics/btRigidBody.h>
#include "util/OrxAssert.h"
#include "core/CoreIncludes.h"
#include "core/XMLPort.h"
+#include "WaypointGroup.h"
+#include "core/EventIncludes.h"
namespace orxonox
@@ -25,9 +26,9 @@
waypoint_actived = false;
distancetrigger = new DistanceTrigger(this->getContext());
distancetrigger->setDistance(100);
- distanceTrigger_->addTarget("Pawn");
- this->addEventSource(distanceTrigger_, "explode");
-
+ distancetrigger->addTarget("Pawn");
+ distancetrigger->setStayActive(false);
+ this->addEventSource(distancetrigger, "activate");
this->attach(distancetrigger);
}
@@ -36,16 +37,23 @@
}
+ void Waypoint::activate(){
+ orxout() << "activate function" << endl;
+ ///++order;
+ waypointgroup->activateNext();
+ }
+
+
//WorldEntity::setDirection
//WorldEntity::getPosition()
//setOrientation()
+
+ void Waypoint::XMLEventPort(Element& xmlelement, XMLPort::Mode mode){
+ SUPER(Waypoint, XMLEventPort, xmlelement, mode); // From the SpaceShip.cc file
+ //XMLPortParam(Waypoint, "order", setOrder, getOrder, xmlelement, mode);
+ XMLPortEventState(Waypoint, BaseObject, "activate", activate, xmlelement, mode);
- void Waypoint::XMLPort(Element& xmlelement, XMLPort::Mode mode){
- SUPER(Waypoint, XMLPort, xmlelement, mode); // From the SpaceShip.cc file
-
- XMLPortParam(Waypoint, "order", setOrder, getOrder, xmlelement, mode);
-
}
Modified: code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.h
===================================================================
--- code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.h 2016-12-05 14:59:27 UTC (rev 11317)
+++ code/branches/QuestGuide_HS16/src/modules/waypoints/Waypoint.h 2016-12-05 14:59:38 UTC (rev 11318)
@@ -4,6 +4,7 @@
#define _Waypoint_H__
#include "OrxonoxPrereqs.h"
+#include "Waypointprereqs.h"
#include "worldentities/StaticEntity.h"
#include "graphics/Model.h"
#include "objects/triggers/DistanceTrigger.h"
@@ -13,7 +14,9 @@
#include "util/OgreForwardRefs.h"
#include "tools/interfaces/Tickable.h"
+#include "WaypointGroup.h"
+
namespace orxonox
{
/**
@@ -36,7 +39,7 @@
virtual ~Waypoint();
- virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+ virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode) override;
inline void enable_waypoint(){
this->waypoint_actived = true;
@@ -50,6 +53,12 @@
return this->order;
}
+ inline void setWaypointGroup(WaypointGroup* waypointgroup_){
+ this->waypointgroup = waypointgroup_;
+ }
+
+ void activate();
+
bool waypoint_actived;
@@ -58,8 +67,9 @@
//virtual bool isCollisionTypeLegal(CollisionType type) const override;
Model* model;
DistanceTrigger* distancetrigger;
- int order;
-
+ unsigned int order = 0;
+ WaypointGroup* waypointgroup;
+
// network callbacks
};
}
Modified: code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.cc
===================================================================
--- code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.cc 2016-12-05 14:59:27 UTC (rev 11317)
+++ code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.cc 2016-12-05 14:59:38 UTC (rev 11318)
@@ -16,6 +16,7 @@
{
RegisterObject(WaypointGroup);
activeWaypoint = nullptr;
+ current = 0;
//model = new Model(this->getContext());
//model->setMeshSource("cube.mesh"); // Name of the arrow file for now bottle
@@ -24,10 +25,10 @@
//model->setOrientation(Vector3(0,0,-1));
//model->setPosition(Vector3(0.0,0.0,0.0)); // this is wrong, it has to be triggered
//waypoint_active = false;
- //distancetrigger = new DistanceTrigger(this->getContext());
+ //distancetrigger = new DistanceTrigger(this->getContext());
//distancetrigger->setDistance(100);
//this->attach(distancetrigger);
-
+
}
WaypointGroup::~WaypointGroup()
@@ -39,9 +40,9 @@
//WorldEntity::getPosition()
//setOrientation()
-
+
Waypoint* WaypointGroup::getWaypoint(unsigned int index)
{
unsigned int i = 0;
@@ -56,33 +57,43 @@
void WaypointGroup::setWaypoint(Waypoint* object)
{
+ object->setWaypointGroup(this);
this->waypoints_.insert(object);
}
+ void WaypointGroup::activateNext(){
+ if (std::next(waypoints_.begin(), current) != std::next(waypoints_.end(), 0)){
+ activeWaypoint = *std::next(waypoints_.begin(), current);
+ ++current;
+ }
+ }
Waypoint* WaypointGroup::getActive(){
if (activeWaypoint == nullptr){
orxout() << "Null Pointer" << endl;
- activateNext();
+ activeWaypoint = getFirst();
- }
- //else if (activeWaypoint->)
+ }
return activeWaypoint;
}
- Waypoint* WaypointGroup::activateNext(){
- for (Waypoint* object : this->waypoints_){
- if(!(object->waypoint_actived)){
- object->enable_waypoint();
- activeWaypoint = object;
- break;
- }
- }
- return activeWaypoint;
+// Waypoint* WaypointGroup::activateNext(){
+// for (Waypoint* object : this->waypoints_){
+// if(!(object->waypoint_actived)){
+// //object->enable_waypoint();
+// activeWaypoint = object;
+// break;
+// }
+// }
+// return activeWaypoint;
+// }
+
+ Waypoint* WaypointGroup::getFirst(){
+ std::set<Waypoint*>::iterator it = waypoints_.begin();
+ return *it;
}
-
void WaypointGroup::XMLPort(Element& xmlelement, XMLPort::Mode mode){
SUPER(WaypointGroup, XMLPort, xmlelement, mode); // From the SpaceShip.cc file
Modified: code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.h
===================================================================
--- code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.h 2016-12-05 14:59:27 UTC (rev 11317)
+++ code/branches/QuestGuide_HS16/src/modules/waypoints/WaypointGroup.h 2016-12-05 14:59:38 UTC (rev 11318)
@@ -4,6 +4,7 @@
#define _WaypointGroup_H__
#include "OrxonoxPrereqs.h"
+#include "Waypointprereqs.h"
#include "worldentities/StaticEntity.h"
#include "graphics/Model.h"
#include "objects/triggers/DistanceTrigger.h"
@@ -30,7 +31,7 @@
*/
class _OrxonoxExport WaypointGroup : public StaticEntity {
-
+
public:
WaypointGroup(Context* context);
@@ -45,21 +46,25 @@
Waypoint* getActive();
-
- Waypoint* activateNext();
-
+ void activateNext();
-
+ Waypoint* getFirst();
+
+
+
+
private:
-
+
//virtual bool isCollisionTypeLegal(CollisionType type) const override;
-
+
std::set<Waypoint*> waypoints_;
Waypoint* activeWaypoint;
+ unsigned int current = 1;
+ //std::set<Waypoint*>::iterator it;
// network callbacks
};
Modified: code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointarrow.cc
===================================================================
--- code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointarrow.cc 2016-12-05 14:59:27 UTC (rev 11317)
+++ code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointarrow.cc 2016-12-05 14:59:38 UTC (rev 11318)
@@ -60,23 +60,21 @@
void Waypointarrow::tick(float dt){
if (getWaypointgroup() == nullptr){
- orxout() << "Second" << endl;
+ //orxout() << "Second" << endl;
return;
}
waypoints_ = getWaypointgroup();
-
waypoint = waypoints_->getActive();
-
Vector3 waypoint_position = waypoint->getWorldPosition();
//orxout() << "dsfsf" << waypoint_position.x << endl;
- // orxout() << "waypoint " << waypoint_position.x << "waypoint " << waypoint_position.y << "waypoint " << waypoint_position.z << endl;
- // orxout() << "model " << this->model->getWorldPosition().x << "model " << this->model->getWorldPosition().y << "model " << this->model->getWorldPosition().z << endl;
- // orxout() << "this " << this->getWorldPosition().x << "this " << this->getWorldPosition().y << "this " << this->getWorldPosition().z << endl;
- // orxout() << "trial " << trial.x << "trial " << trial.y << "trial " << trial.z << endl;
+ //orxout() << "waypoint " << waypoint_position.x << "waypoint " << waypoint_position.y << "waypoint " << waypoint_position.z << endl;
+ //orxout() << "model " << this->model->getWorldPosition().x << "model " << this->model->getWorldPosition().y << "model " << this->model->getWorldPosition().z << endl;
+ //orxout() << "this " << this->getWorldPosition().x << "this " << this->getWorldPosition().y << "this " << this->getWorldPosition().z << endl;
+ //orxout() << "trial " << trial.x << "trial " << trial.y << "trial " << trial.z << endl;
Vector3 origin = model->getWorldPosition();;
@@ -87,9 +85,7 @@
void Waypointarrow::XMLPort(Element& xmlelement, XMLPort::Mode mode){
SUPER(Waypointarrow, XMLPort, xmlelement, mode); // From the SpaceShip.cc file
-
//XMLPortParamTemplate(WorldEntity, "orientation", setOrientation, getOrientation, xmlelement, mode, Vector3)
-
//XMLPortObject(SpaceShip, Engine, "engines", addEngine, getEngine, xmlelement, mode); // TRY ADDING THE WAYPOINT ARROW LIKE AN ENGINE
Added: code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointprereqs.h
===================================================================
--- code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointprereqs.h (rev 0)
+++ code/branches/QuestGuide_HS16/src/modules/waypoints/Waypointprereqs.h 2016-12-05 14:59:38 UTC (rev 11318)
@@ -0,0 +1,55 @@
+/*
+ * 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:
+ * Reto Grieder
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ at file
+ at brief
+ Shared library macros, enums, constants and forward declarations for the Waypoint module
+*/
+
+#ifndef _WaypointPrereqs_H__
+#define _WaypointPrereqs_H__
+
+#include "OrxonoxConfig.h"
+#include "OrxonoxPrereqs.h"
+
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+ class Waypoint;
+ class WaypointGroup;
+ class Waypointarrow;
+
+
+}
+
+#endif /* _WaypointPrereqs_H__ */
More information about the Orxonox-commit
mailing list