[Orxonox-commit 6014] r10673 - in code/branches/AI_HS15: data/levels src/orxonox/controllers
gania at orxonox.net
gania at orxonox.net
Mon Oct 19 17:15:18 CEST 2015
Author: gania
Date: 2015-10-19 17:15:17 +0200 (Mon, 19 Oct 2015)
New Revision: 10673
Modified:
code/branches/AI_HS15/data/levels/AITest.oxw
code/branches/AI_HS15/src/orxonox/controllers/AIController.cc
code/branches/AI_HS15/src/orxonox/controllers/AIController.h
code/branches/AI_HS15/src/orxonox/controllers/FormationController.cc
code/branches/AI_HS15/src/orxonox/controllers/FormationController.h
Log:
added setDesiredPositionOfSlaves() to FormationController, Vector3* desiredRelativePosition_ as a member var to FormationController, added a "stay in formation" functionality to tick of AIController. TODO: change from moveToPosition to a Waypoint. Remark: create a WorldEntity object at certain position
Modified: code/branches/AI_HS15/data/levels/AITest.oxw
===================================================================
--- code/branches/AI_HS15/data/levels/AITest.oxw 2015-10-19 14:11:17 UTC (rev 10672)
+++ code/branches/AI_HS15/data/levels/AITest.oxw 2015-10-19 15:15:17 UTC (rev 10673)
@@ -31,12 +31,12 @@
>
<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 team=0 position="-1000,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+ <SpawnPoint team=0 position="-2000,-1000,3000" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
<?lua
for i = 0, 5, 1 do
?>
- <SpaceShip position="<?lua print(1600+i*200) ?>,3000, 2000 ?>" lookat="0,0,0">
+ <SpaceShip position="<?lua print(1600+i*200) ?>,<?lua print(3000-i*500) ?>, -1500 ?>" lookat="0,0,0">
<templates>
<Template link=spaceshipassff />
</templates>
Modified: code/branches/AI_HS15/src/orxonox/controllers/AIController.cc
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/AIController.cc 2015-10-19 14:11:17 UTC (rev 10672)
+++ code/branches/AI_HS15/src/orxonox/controllers/AIController.cc 2015-10-19 15:15:17 UTC (rev 10673)
@@ -204,14 +204,19 @@
float random;
float maxrand = 100.0f / ACTION_INTERVAL;
ControllableEntity* controllable = this->getControllableEntity();
- if (this->state_ == SLAVE)
+ if (this->state_ == SLAVE && controllable && this->mode_ == DEFAULT)
{
- Vector3 desiredAbsolutePosition = this->myMaster_->getControllableEntity()->getWorldPosition() + this->myMaster_->getControllableEntity()->getWorldOrientation()*desiredRelativePosition_;
- orxonox::WeakPtr<MovableEntity> waypoint = new MovableEntity(this->center_->getContext());
- waypoint->setPosition(desiredAbsolutePosition);
+ if (this->myMaster_ && this->myMaster_->getControllableEntity() && desiredRelativePosition_){
+ Vector3 desiredAbsolutePosition = this->myMaster_->getControllableEntity()->getWorldPosition() + this->myMaster_->getControllableEntity()->getWorldOrientation()* (*desiredRelativePosition_);
+ this->moveToPosition (desiredAbsolutePosition);
+ //WorldEntity* waypoint = new WorldEntity(this->getContext());
+ //waypoint->setPosition(desiredAbsolutePosition);
- this->addWaypoint(waypoint);
+ //this->addWaypoint(waypoint);
+
+ }
+
}
//DOES: Either move to the waypoint or search for a Point of interest
if (controllable && this->mode_ == DEFAULT)// bot is ready to move to a target
Modified: code/branches/AI_HS15/src/orxonox/controllers/AIController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/AIController.h 2015-10-19 14:11:17 UTC (rev 10672)
+++ code/branches/AI_HS15/src/orxonox/controllers/AIController.h 2015-10-19 15:15:17 UTC (rev 10673)
@@ -29,12 +29,14 @@
#ifndef _AIController_H__
#define _AIController_H__
-#include "OrxonoxPrereqs.h"
+#include "OrxonoxPrereqs.h"
+#include "util/Math.h"
#include "tools/Timer.h"
#include "tools/interfaces/Tickable.h"
#include "ArtificialController.h"
+
namespace orxonox
{
class _OrxonoxExport AIController : public ArtificialController, public Tickable
@@ -54,8 +56,7 @@
Timer actionTimer_; //<! Regularly calls action().
std::vector<WeakPtr<AIController> > enemies_, allies_;
- Vector3* desiredRelativePosition_;
- Vector3* currentRelativePosition_;
+
};
}
Modified: code/branches/AI_HS15/src/orxonox/controllers/FormationController.cc
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/FormationController.cc 2015-10-19 14:11:17 UTC (rev 10672)
+++ code/branches/AI_HS15/src/orxonox/controllers/FormationController.cc 2015-10-19 15:15:17 UTC (rev 10673)
@@ -711,18 +711,23 @@
return;
switch (this->formationMode_){
case ATTACK:
- for(std::vector<FormationController*>::iterator it = slaves_.begin(), float i = 0; it != slaves_.end(); it++, ++i)
{
- (*it)->desiredPosition_ = new Vector3 ((i-slaves_.size()/2)*200, 0, 0);
-
+ float i = 0;
+ for(std::vector<FormationController*>::iterator it = slaves_.begin(); it != slaves_.end(); it++)
+ {
+ (*it)->desiredRelativePosition_ = new Vector3 ((i-slaves_.size()/2)*200, 0, 0);
+ i++;
+ }
+ break;
}
- break;
- case NORMAL:
-
- break;
- case DEFEND:
-
- break;
+ case NORMAL:
+ {
+ break;
+ }
+ case DEFEND:
+ {
+ break;
+ }
}
}
Modified: code/branches/AI_HS15/src/orxonox/controllers/FormationController.h
===================================================================
--- code/branches/AI_HS15/src/orxonox/controllers/FormationController.h 2015-10-19 14:11:17 UTC (rev 10672)
+++ code/branches/AI_HS15/src/orxonox/controllers/FormationController.h 2015-10-19 15:15:17 UTC (rev 10673)
@@ -72,8 +72,8 @@
/**
@brief If master, set the desired position of slaves (Vector2) for all the slaves.
*/
- inline void setDesiredPositionOfSlaves();
-
+ void setDesiredPositionOfSlaves();
+
inline void setPassive(bool passive)
{ this->passive_ = passive; }
inline bool getPassive() const
@@ -105,6 +105,7 @@
virtual void changedControllableEntity();
protected:
+ Vector3* desiredRelativePosition_;
bool formationFlight_;
bool passive_;
unsigned int maxFormationSize_;
More information about the Orxonox-commit
mailing list