[Orxonox-commit 4121] r8792 - code/branches/ai2/src/orxonox/controllers

jo at orxonox.net jo at orxonox.net
Wed Jul 27 21:21:30 CEST 2011


Author: jo
Date: 2011-07-27 21:21:29 +0200 (Wed, 27 Jul 2011)
New Revision: 8792

Modified:
   code/branches/ai2/src/orxonox/controllers/AIController.cc
   code/branches/ai2/src/orxonox/controllers/ArtificialController.cc
   code/branches/ai2/src/orxonox/controllers/ArtificialController.h
Log:
Yeay, works. The pickuping efficiency isn't as good as expected though.

Modified: code/branches/ai2/src/orxonox/controllers/AIController.cc
===================================================================
--- code/branches/ai2/src/orxonox/controllers/AIController.cc	2011-07-26 21:41:45 UTC (rev 8791)
+++ code/branches/ai2/src/orxonox/controllers/AIController.cc	2011-07-27 19:21:29 UTC (rev 8792)
@@ -240,9 +240,13 @@
             {
                 WorldEntity* wPoint = this->waypoints_[this->waypoints_.size()-1];
                 if(wPoint)
+                {
                     this->moveToPosition(wPoint->getWorldPosition()); //BUG ?? sometime wPoint->getWorldPosition() causes crash
-                if (wPoint->getWorldPosition().squaredDistance(controllable->getPosition()) <= this->squaredaccuracy_)
-                    this->waypoints_.pop_back(); // if goal is reached, remove it from the list
+                    if (wPoint->getWorldPosition().squaredDistance(controllable->getPosition()) <= this->squaredaccuracy_)
+                        this->waypoints_.pop_back(); // if goal is reached, remove it from the list
+                }
+                else
+                    this->waypoints_.pop_back(); // remove invalid waypoints
 
             }
             else if(this->defaultWaypoint_ && ((this->defaultWaypoint_->getPosition()-controllable->getPosition()).length()  > 200.0f))

Modified: code/branches/ai2/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/branches/ai2/src/orxonox/controllers/ArtificialController.cc	2011-07-26 21:41:45 UTC (rev 8791)
+++ code/branches/ai2/src/orxonox/controllers/ArtificialController.cc	2011-07-27 19:21:29 UTC (rev 8792)
@@ -104,7 +104,11 @@
         if (this->isInitialized())
         {//Vector-implementation: mode_.erase(mode_.begin(),mode_.end());
             for (size_t i = 0; i < this->waypoints_.size(); ++i)
-                this->waypoints_[i]->destroy();
+            {
+                if(this->waypoints_[i])
+                    this->waypoints_[i]->destroy();
+            }
+            //this->waypoints_.clear();
             this->removeFromFormation();
             this->weaponModes_.clear();
             for (ObjectList<ArtificialController>::iterator it = ObjectList<ArtificialController>::begin(); it; ++it)
@@ -1195,7 +1199,7 @@
     void ArtificialController::manageWaypoints()
     {
         if(!defaultWaypoint_)
-            this->updatePointsOfInterest("PickupSpawner", 60.0f); // long search radius if there is no default goal
+            this->updatePointsOfInterest("PickupSpawner", 200.0f); // long search radius if there is no default goal
         else
             this->updatePointsOfInterest("PickupSpawner", 20.0f); // take pickup en passant if there is a default waypoint
     }

Modified: code/branches/ai2/src/orxonox/controllers/ArtificialController.h
===================================================================
--- code/branches/ai2/src/orxonox/controllers/ArtificialController.h	2011-07-26 21:41:45 UTC (rev 8791)
+++ code/branches/ai2/src/orxonox/controllers/ArtificialController.h	2011-07-27 19:21:29 UTC (rev 8792)
@@ -172,7 +172,7 @@
             int getFiremode(std::string name);
 
             //WAYPOINT DATA
-            std::vector<WorldEntity*> waypoints_;
+            std::vector<WeakPtr<WorldEntity> > waypoints_;
             size_t currentWaypoint_;
             float squaredaccuracy_;
             WorldEntity* defaultWaypoint_;




More information about the Orxonox-commit mailing list