[Orxonox-commit 5052] r9716 - code/trunk/src/orxonox/controllers

jo at orxonox.net jo at orxonox.net
Thu Oct 24 00:41:13 CEST 2013


Author: jo
Date: 2013-10-24 00:41:13 +0200 (Thu, 24 Oct 2013)
New Revision: 9716

Modified:
   code/trunk/src/orxonox/controllers/WaypointPatrolController.cc
   code/trunk/src/orxonox/controllers/WaypointPatrolController.h
Log:
Making the WaypointPatrolController configurable such that it can follow/stalk/hunt an enemy without shooting at the first place.

Modified: code/trunk/src/orxonox/controllers/WaypointPatrolController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/WaypointPatrolController.cc	2013-10-22 21:41:23 UTC (rev 9715)
+++ code/trunk/src/orxonox/controllers/WaypointPatrolController.cc	2013-10-23 22:41:13 UTC (rev 9716)
@@ -41,7 +41,8 @@
     {
         RegisterObject(WaypointPatrolController);
 
-        this->alertnessradius_ = 500;
+        this->alertnessradius_ = 500.0f;
+        this->attackradius_ = 1000.0f;
 
         this->patrolTimer_.setTimer(rnd(), true, createExecutor(createFunctor(&WaypointPatrolController::searchEnemy, this)));
     }
@@ -51,6 +52,7 @@
         SUPER(WaypointPatrolController, XMLPort, xmlelement, mode);
 
         XMLPortParam(WaypointPatrolController, "alertnessradius", setAlertnessRadius, getAlertnessRadius, xmlelement, mode).defaultValues(500.0f);
+        XMLPortParam(WaypointPatrolController, "attackradius", setAttackRadius, getAttackRadius, xmlelement, mode).defaultValues(1000.0f);
     }
 
     void WaypointPatrolController::tick(float dt)
@@ -58,14 +60,14 @@
         if (!this->isActive())
             return;
 
-        if (this->target_)
+        if (this->target_) //if there is a target, follow it and shoot it, if it is close enough
         {
             this->aimAtTarget();
 
             if (this->bHasTargetPosition_)
                 this->moveToTargetPosition();
 
-            if (this->getControllableEntity() && this->isCloseAtTarget(1000) && this->isLookingAtTarget(math::pi / 20.0f))
+            if (this->getControllableEntity() && this->isCloseAtTarget(this->attackradius_) && this->isLookingAtTarget(math::pi / 20.0f))
                 this->getControllableEntity()->fire(0);
         }
         else

Modified: code/trunk/src/orxonox/controllers/WaypointPatrolController.h
===================================================================
--- code/trunk/src/orxonox/controllers/WaypointPatrolController.h	2013-10-22 21:41:23 UTC (rev 9715)
+++ code/trunk/src/orxonox/controllers/WaypointPatrolController.h	2013-10-23 22:41:13 UTC (rev 9716)
@@ -49,11 +49,17 @@
                 { this->alertnessradius_ = radius; }
             inline float getAlertnessRadius() const
                 { return this->alertnessradius_; }
+                
+            inline void setAttackRadius(float distance)
+                { this->attackradius_ = distance; }
+            inline float getAttackRadius() const
+                { return this->attackradius_; }
 
         protected:
             void searchEnemy();
 
-            float alertnessradius_;
+            float alertnessradius_; //!< Enemies within this radius are being followed and shot.
+            float attackradius_;    //!< Enemies only get shot, if they are within the attackradius_.
             Timer patrolTimer_;
     };
 }




More information about the Orxonox-commit mailing list