[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