[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