[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