[Orxonox-commit 6231] r10888 - in code/branches/campaignHS15: data/levels src/orxonox/controllers src/orxonox/worldentities

gania at orxonox.net gania at orxonox.net
Sun Nov 29 18:36:22 CET 2015


Author: gania
Date: 2015-11-29 18:36:21 +0100 (Sun, 29 Nov 2015)
New Revision: 10888

Modified:
   code/branches/campaignHS15/data/levels/AITest.oxw
   code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc
   code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.h
   code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc
   code/branches/campaignHS15/src/orxonox/controllers/FightingController.h
   code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc
   code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc
   code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc
   code/branches/campaignHS15/src/orxonox/worldentities/Actionpoint.h
Log:
started working on pickups

Modified: code/branches/campaignHS15/data/levels/AITest.oxw
===================================================================
--- code/branches/campaignHS15/data/levels/AITest.oxw	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/data/levels/AITest.oxw	2015-11-29 17:36:21 UTC (rev 10888)
@@ -17,8 +17,10 @@
   include("templates/spaceshipEscort.oxt")
   include("templates/spaceshipRing.oxt")
   include("templates/spaceshipSwallow.oxt")
+  include("templates/pickupRepresentationTemplates.oxt")
 ?>
 
+
 <Level>
   <templates>
     <Template link=lodtemplate_default />
@@ -29,18 +31,45 @@
     ambientlight = "0.8, 0.8, 0.8"
     skybox       = "Orxonox/Starbox"
   >
-
+    <?lua
+      include("includes/pickups.oxi")
+    ?>
     <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"/>
-    <TeamSpawnPoint team=0 position="3000, -1500, 1000" lookat="1,1,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
+    <TeamSpawnPoint team=1 position="1500, 1500, 1500" lookat="1,1,-1" spawnclass=SpaceShip pawndesign=spaceshipassff />
     
+<!--     
+    <PickupSpawner pickup=largedamageboostpickup position="0,0,0" triggerDistance="20" respawnTime="30" maxSpawnedItems="10" />
+<PickupSpawner pickup=crazyhealthpickup position="0,0,0" triggerDistance="50" respawnTime="30" maxSpawnedItems="10" />
+<PickupSpawner pickup=hugeshieldpickup position="4000,4500, 4500" triggerDistance="10" respawnTime="5" maxSpawnedItems="10" />
+<PickupSpawner pickup=smalljumppickup position="6500,6500, 6000" triggerDistance="20" respawnTime="10" maxSpawnedItems="99" />
+<PickupSpawner pickup=largedamageboostpickup position="9500,9500, 9500" triggerDistance="20" respawnTime="30" maxSpawnedItems="10" />
+<PickupSpawner pickup=largedamageboostpickup position="13000,13000,13000" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
+ -->
 <!-- HERE STARTS DEMO FOR THE "WAYPOINTS" -->
       <!-- 
+    <SpaceShip position="-1500, -1500, -1500" lookat="0,0,0" team=0 name="ss1">
+      <templates>
+        <Template link=spaceshipassff />
+      </templates>
+      <controller>
+        <DivisionController team=0 formationMode="finger4">
+          <actionpoints>
+            <Model mesh="cube.mesh" scale=8 position="  0,2000,-600" />
+            <Model mesh="cube.mesh" scale=8 position="  0,2000,-1000" />
+            <Model mesh="cube.mesh" scale=8 position="400,2000,-1000" />
+            <Model mesh="cube.mesh" scale=8 position="400,2000,-600" />
+          </actionpoints>
+        </DivisionController>
+      </controller>
+    </SpaceShip> 
+ -->
+    <!-- those two are same -->
+
+ <!--    
     <Model mesh="cube.mesh" scale=8 position="  0,2000,-600" />
-    <Model mesh="cube.mesh" scale=8 position="  0,2000,-800" />
-    <Model mesh="cube.mesh" scale=8 position="200,2000,-800" />
-    <Model mesh="cube.mesh" scale=8 position="200,2000,-600" />
-    <Model mesh="cube.mesh" scale=8 position="0,0,0" />
-
+    <Model mesh="cube.mesh" scale=8 position="  0,2000,-1000" />
+    <Model mesh="cube.mesh" scale=8 position="400,2000,-1000" />
+    <Model mesh="cube.mesh" scale=8 position="400,2000,-600" />
     <SpaceShip position="-1500, 1500, -1000" lookat="0,0,0" team=0 name="ss1">
       <templates>
         <Template link=spaceshipassff />
@@ -49,19 +78,19 @@
         <DivisionController team=0 formationMode="finger4">
           <actionpoints>
             <Actionpoint position="  0,2000,-600" action="FLY" loopStart=true/>
-            <Actionpoint position="  0,2000,-800" action="FLY"  />
-            <Actionpoint position="200,2000,-800" action="FLY" />
-            <Actionpoint position="200,2000,-600" action="FLY" loopEnd=true />
+            <Actionpoint position="  0,2000,-1000" action="FLY"  />
+            <Actionpoint position="400,2000,-1000" action="FLY" />
+            <Actionpoint position="400,2000,-600" action="FLY" loopEnd=true />
           </actionpoints>
         </DivisionController>
       </controller>
-    </SpaceShip> 
-    -->
+    </SpaceShip>  -->
+   
 <!-- HERE ENDS DEMO FOR THE "WAYPOINTS" -->
 
 <!-- HERE STARTS DEMO FOR THE ACTIONPOINTS. 
 P.S. Never set protectMe in the first actionpoint: if human didn't spawn, that actionpoint will be skipped -->
-       
+       <!-- 
     <Model mesh="cube.mesh" scale=8 position="0,0,0" />
 
     <SpaceShip position="-2000, 1500, -1000" lookat="0,0,0" team=0 name="ss2">
@@ -123,10 +152,11 @@
       </templates>
     </SpaceShip> 
  
-   
+    -->
 <!-- HERE ENDS DEMO FOR THE ACTIONPOINTS -->
 <!-- HERE STARTS DEMO FOR FIGHTING -->
-    <!-- 
+    
+
     <SpaceShip position="-4000, 1500, -1000" lookat="0,0,0" team=0 name="ss2">
       <templates>
         <Template link=spaceshipassff />
@@ -241,7 +271,7 @@
         </SectionController>
       </controller>
     </SpaceShip>
- -->
+
     
 <!-- HERE ENDS DEMO FOR FIGHTING -->
 <!-- HERE STARTS DEMO FOR FORMATIONS -->

Modified: code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc	2015-11-29 17:36:21 UTC (rev 10888)
@@ -31,8 +31,6 @@
 #include "core/XMLPort.h"
 #include <algorithm>
 #include "worldentities/Actionpoint.h"
-
-
 namespace orxonox
 {
 
@@ -44,7 +42,12 @@
         this->bInLoop_ = false;
         this->bLoop_ = false;
         this->bEndLoop_ = false;
-        this->parsedActionpoints_.clear();
+        loopActionpoints_.clear();
+        parsedActionpoints_.clear();
+        actionpoints_.clear();
+        healthSpawners_.clear();
+        damageSpawners_.clear();
+        speedSpawners_.clear();
         this->bTakenOver_ = false;
         this->action_ = Action::NONE;
         this->squaredaccuracy_ = 2500;
@@ -63,6 +66,9 @@
         loopActionpoints_.clear();
         parsedActionpoints_.clear();
         actionpoints_.clear();
+        healthSpawners_.clear();
+        damageSpawners_.clear();
+        speedSpawners_.clear();
     }
     void ActionpointController::tick(float dt)
     {
@@ -96,7 +102,11 @@
             }
         }
         if (this->bFirstTick_)
-        {            
+        {    
+            setSpawners();
+            // orxout(internal_error) << "health spawners size = " << this->healthSpawners_.size() <<
+            // ", damage spawners size = " << this->damageSpawners_.size() <<
+            // ", speed spawners size = " << this->speedSpawners_.size() << endl;        
             this->bFirstTick_ = false;
         }
 
@@ -108,6 +118,7 @@
             return;
         if (!this->getControllableEntity() || !orxonox_cast<Pawn*> (this->getControllableEntity()))
             return;
+
         this->deltaHp = orxonox_cast<Pawn*> (this->getControllableEntity())->getHealth() - this->previousHp;
         this->previousHp = orxonox_cast<Pawn*> (this->getControllableEntity())->getHealth();
         if (this->actionCounter_ % 2 == 0)
@@ -115,6 +126,12 @@
         //No action -> pop one from stack
         if (this->action_ == Action::NONE || this->bTakenOver_)
         {
+            // Point point = closestPickup(PickupType::HEALTH);
+            // if (point.action != Action::NONE)
+            // {
+            //     orxout(internal_error) << "found health" << endl;
+            //     this->parsedActionpoints_.push_back(point);
+            // }
             if (this->parsedActionpoints_.empty() && this->loopActionpoints_.empty())
             {
                 Point p = { Action::FIGHTALL, "", Vector3::ZERO, false };
@@ -141,7 +158,10 @@
                     if (!(this->parsedActionpoints_.empty() && this->loopActionpoints_.empty()))
                     {
                         this->action();
-                    }       
+                    }
+                    else
+                    {
+                    }      
                 }
             }
         }
@@ -213,12 +233,23 @@
         }
         if (this->hasTarget())
         {
-            //----choose where to go----
             this->maneuver();
-            //----fire if you can----
-            this->bShooting_ = this->canFire();                
+            this->bShooting_ = this->canFire();
+            // Vector3 healthPosition = bestHealthPickup((this->target_->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length());
+            // if ((this->getControllableEntity()->getWorldPosition() - healthPosition).length() < this->tolerance_)
+            // {
+            //     //----choose where to go----
+            //     this->maneuver();
+            // }
+            // else
+            // {
+            //     this->dodgeTowards(healthPosition);
+            // }
+            // //----fire if you can----
+            // this->bShooting_ = this->canFire();  
         }
         this->actionCounter_ += this->actionCounter_ < 100000 ? 1 : -this->actionCounter_ ;
+
     }
     void ActionpointController::setProtect (ControllableEntity* protect)
     {
@@ -235,9 +266,9 @@
         std::string targetName;
         bool inLoop = false;
         Point p;
-        if (static_cast<Actionpoint*> (actionpoint))
+        if (actionpoint->getIdentifier()->getName() == "Actionpoint")
         {
-            Actionpoint* ap = static_cast<Actionpoint*> (actionpoint);
+            Actionpoint* ap = orxonox_cast<Actionpoint*> (actionpoint);
             actionName = ap->getActionXML();
             targetName = ap->getName();
             position = ap->getWorldPosition();
@@ -276,6 +307,7 @@
         }
         else
         {
+            inLoop = true;
             p.action = Action::FLY; p.name = ""; p.position = actionpoint->getWorldPosition(); p.inLoop = inLoop;
         }
             parsedActionpoints_.push_back(p);
@@ -289,7 +321,7 @@
             return 0;
     }
 
-      Action::Value ActionpointController::getAction ()
+    Action::Value ActionpointController::getAction ()
     {
         return this->action_;
     }
@@ -592,11 +624,140 @@
                     CommonController::distance (this->getControllableEntity(), static_cast<ControllableEntity*>(newTarget))
                         <= this->attackRange_ )
                 {
-                    Point p = { Action::FIGHT, CommonController::getName(newTarget), Vector3::ZERO, false };
-                    this->parsedActionpoints_.push_back(p);
+                    if (this->bLoop_)
+                    {
+                        Point p = { Action::FIGHT, CommonController::getName(newTarget), Vector3::ZERO, true };
+                        this->loopActionpoints_.push_back(p);
+                    }
+                    else
+                    {
+                        Point p = { Action::FIGHT, CommonController::getName(newTarget), Vector3::ZERO, false };
+                        this->parsedActionpoints_.push_back(p);
+                    }
                     this->executeActionpoint();
                 }
             }
         }
     }
+    Vector3 ActionpointController::bestHealthPickup(float searchRadius)
+    {
+
+        //1000000/distance^2 * 1/index+1
+        float maxUse = 0;
+        float tempUse = -1;
+        int index = 0;
+        float distance = 0;
+        Vector3 bestPosition = this->getControllableEntity()->getWorldPosition();
+
+        for (std::multimap<int, std::pair<PickupSpawner*, bool> >::iterator it=healthSpawners_.begin(); it!=healthSpawners_.end(); ++it)
+        {
+            distance = (this->getControllableEntity()->getWorldPosition() - (*it).second.first->getWorldPosition()).length();
+            if (distance < this->tolerance_ || !(*it).second.second)
+            {
+                (*it).second.second = false;
+                continue;
+            }
+            if (distance > searchRadius)
+                continue;
+            index = (*it).first;
+            tempUse = 1000000*1/(1+distance*distance) * 1/((index/2.0f)+1);
+            if (tempUse > maxUse)
+            {
+                bestPosition = (*it).second.first->getWorldPosition();
+                maxUse = tempUse;
+            }
+        }
+        //std::multimap<int, std::pair<PickupSpawner*, bool> >::iterator it = this->healthSpawners_.find(index);
+        //P.S. check if it == ... .end()
+        //orxout (internal_error) << "best position = " << bestPosition << endl;
+        return  bestPosition;
+    }
+    void ActionpointController::setSpawners()
+    {
+        std::vector<std::string> damagePickups;
+        std::vector<std::string> healthPickups;
+        std::vector<std::string> speedPickups;       
+        int index = 0;
+
+
+        damagePickups.push_back("largedamageboostpickup");
+        damagePickups.push_back("dronepickup");            
+        damagePickups.push_back("mediumdamageboostpickup");
+        damagePickups.push_back("smalldamageboostpickup");
+
+        healthPickups.push_back("triplehealthspeedinvisibilitypickup");            
+        healthPickups.push_back("crazyhealthpickup");
+        healthPickups.push_back("hugehealthpickup");
+        healthPickups.push_back("hugeshieldpickup");
+        healthPickups.push_back("hugeinvisiblepickup");
+        healthPickups.push_back("hugeshrinkpickup");
+        healthPickups.push_back("mediumhealthpickup");
+        healthPickups.push_back("mediumshieldpickup");
+        healthPickups.push_back("mediuminvisiblepickup");
+        healthPickups.push_back("mediumshrinkpickup");  
+        healthPickups.push_back("smallhealthpickup");                   
+        healthPickups.push_back("smallshieldpickup");
+        healthPickups.push_back("smallinvisiblepickup");
+        healthPickups.push_back("smallshrinkpickup");
+
+        speedPickups.push_back("triplehealthspeedinvisibilitypickup");
+        speedPickups.push_back("hugespeedpickup");
+        speedPickups.push_back("smalljumppickup");
+        speedPickups.push_back("mediumspeedpickup");
+        speedPickups.push_back("smallspeedpickup");
+        
+
+
+        for (ObjectList<WorldEntity>::iterator it = ObjectList<WorldEntity>::begin(); it; ++it)
+        {
+            if ((*it)->getIdentifier()->getName() != "PickupSpawner")
+                continue;
+            PickupSpawner* spawner = static_cast<PickupSpawner*>(*it);
+            std::string name = spawner->getPickupTemplateName();
+            //float distance = ((*it)->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length(); 
+            // if (distance < 50.0f)
+            //     continue;           
+            for (unsigned int i = 0; i < healthPickups.size(); ++i)
+            {
+                if (name == healthPickups.at(i))
+                {
+                    index = i;
+                    this->healthSpawners_.insert(std::make_pair(index, std::make_pair(spawner, true)));
+                    break;
+                }
+            }
+            for (unsigned int i = 0; i < damagePickups.size(); ++i)
+            {
+                if (name == damagePickups.at(i))
+                {
+                    //tempUse = 1000000*1/(1+distance*distance) * 1/((i/2.0f)+1);
+                    index = i;
+                    this->damageSpawners_.insert(std::make_pair(index, std::make_pair(spawner, true)));
+                    break;
+                }
+            }
+            for (unsigned int i = 0; i < speedPickups.size(); ++i)
+            {
+                if (name == speedPickups.at(i))
+                {
+                    //tempUse = 1000000*1/(1+distance*distance) * 1/((i/2.0f)+1);
+                    index = i;
+                    this->speedSpawners_.insert(std::make_pair(index, std::make_pair(spawner, true)));
+                    break;
+                }
+            }
+            // if (tempUse > maxUse)
+            // {
+            //     Point p = { Action::FLY, "", (*it)->getWorldPosition(), false };
+            //     maxUse = tempUse;
+            //     maxPoint = p;
+            // }
+            // else
+            // {
+            //     tempUse = -1;
+            //     continue;
+            // }
+            // orxout(internal_error) << "resp time  = " << static_cast<PickupSpawner*>(*it)->getRespawnTime() << endl;
+        }  
+    }
 }

Modified: code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.h
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.h	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.h	2015-11-29 17:36:21 UTC (rev 10888)
@@ -32,6 +32,8 @@
 #include "controllers/FightingController.h"
 #include "tools/Timer.h"
 #include "tools/interfaces/Tickable.h"
+#include "../modules/pickup/PickupSpawner.h"
+#include <map>
 
 namespace orxonox
 {
@@ -50,6 +52,13 @@
         Vector3 position;
         bool inLoop;
     } ;
+    namespace PickupType
+    {
+        enum Value
+        {  
+            NONE, DAMAGE, HEALTH, SPEED, PORTAL
+        };
+    }
 
     class _OrxonoxExport ActionpointController : public FightingController, public Tickable
     {
@@ -117,6 +126,13 @@
             //----[Actionpoint methods]----          
                 bool bFirstTick_; 
 
+                void setSpawners();
+                Vector3 bestHealthPickup (float searchRadius);
+                // Point closestPickup(PickupType::Value pickupType);
+                std::multimap <int, std::pair<PickupSpawner*, bool> > healthSpawners_; 
+                std::multimap <int, std::pair<PickupSpawner*, bool> > damageSpawners_; 
+                std::multimap <int, std::pair<PickupSpawner*, bool> > speedSpawners_; 
+
         private:
             
     };

Modified: code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc	2015-11-29 17:36:21 UTC (rev 10888)
@@ -171,14 +171,38 @@
             dodge(thisPosition, diffUnit);
         }
     }
-    
+    void FightingController::dodgeTowards (Vector3& position)
+    {
+        Vector3 thisPosition = this->getControllableEntity()->getPosition();
+        Vector3 diff = (position - thisPosition);
+        float diffLength = diff.length();
+        Vector3 diffUnit = diff/diffLength;
+        float factor = 300.0f;
+        if (diffLength < 300)
+        {
+            this->setTargetPosition(position);
+            return;    
+        }
+        else if (diffLength < 600)
+            factor = 400.0f;
+        else if (diffLength < 1000)
+            factor = 700.0f;
+        else
+            factor = 1000.0f;
+        float x = CommonController::randomInRange (400, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
+        float y = CommonController::randomInRange (400, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
+        float z = diffUnit.z == 0 ? 0 : (1/diffUnit.z) * (-x * diffUnit.x - y * diffUnit.y);
+        this->setTargetPosition(thisPosition + Vector3(x,y,z) + diffUnit * factor);
+        // orxout(internal_error) << "Dodging towards " << Vector3(x,y,z)  << endl;
+        this->boostControl();
+    }
     void FightingController::dodge(const Vector3& thisPosition, Vector3& diffUnit)
     {
         //d.x*x + d.y*y + d.z*z == 0
         //z = 1/d.z * (-d.y*y - d.x * x)
         float x = CommonController::randomInRange (100, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
         float y = CommonController::randomInRange (100, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
-        float z = (1/diffUnit.z) * (-x * diffUnit.x - y * diffUnit.y);
+        float z = diffUnit.z == 0 ? 0 : (1/diffUnit.z) * (-x * diffUnit.x - y * diffUnit.y);
         this->setTargetPosition(thisPosition + Vector3(x,y,z) + (this->deltaHp < 0 ? -diffUnit * 450.0f : diffUnit * 100.0f));
         this->boostControl();
 

Modified: code/branches/campaignHS15/src/orxonox/controllers/FightingController.h
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/FightingController.h	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/FightingController.h	2015-11-29 17:36:21 UTC (rev 10888)
@@ -61,6 +61,7 @@
 
             void maneuver();
             void dodge(const Vector3& thisPosition, Vector3& diffUnit);
+            void dodgeTowards (Vector3& position);
             bool canFire();
             void doFire();
             WeakPtr<ControllableEntity> target_;

Modified: code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc	2015-11-29 17:36:21 UTC (rev 10888)
@@ -41,7 +41,7 @@
         RegisterObject(FlyingController);        
         this->rotationProgress_ = 0;
         this->spread_ = 200;
-        this->tolerance_ = 100;
+        this->tolerance_ = 80;
     }
     FlyingController::~FlyingController() 
     {

Modified: code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc	2015-11-29 17:36:21 UTC (rev 10888)
@@ -125,7 +125,19 @@
                 if (this->hasTarget())
                 {
                     this->maneuver();
-                    this->bShooting_ = this->canFire();                
+                    this->bShooting_ = this->canFire();
+                    // Vector3 healthPosition = bestHealthPickup((this->target_->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length());
+                    // if ((this->getControllableEntity()->getWorldPosition() - healthPosition).length() < this->tolerance_)
+                    // {
+                    //     //----choose where to go----
+                    //     this->maneuver();
+                    // }
+                    // else
+                    // {
+                    //     this->dodgeTowards(healthPosition);
+                    // }
+                    // //----fire if you can----
+                    // this->bShooting_ = this->canFire();               
                 }
             }
         }

Modified: code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc	2015-11-29 17:36:21 UTC (rev 10888)
@@ -111,10 +111,20 @@
                 }
                 if (this->hasTarget())
                 {
-                    //----choose where to go----
                     this->maneuver();
-                    //----fire if you can----
-                    this->bShooting_ = this->canFire();                
+                    this->bShooting_ = this->canFire();
+                    // Vector3 healthPosition = bestHealthPickup((this->target_->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length());
+                    // if ((this->getControllableEntity()->getWorldPosition() - healthPosition).length() < this->tolerance_)
+                    // {
+                    //     //----choose where to go----
+                    //     this->maneuver();
+                    // }
+                    // else
+                    // {
+                    //     this->dodgeTowards(healthPosition);
+                    // }
+                    // //----fire if you can----
+                    // this->bShooting_ = this->canFire();               
                 }
             }
         }

Modified: code/branches/campaignHS15/src/orxonox/worldentities/Actionpoint.h
===================================================================
--- code/branches/campaignHS15/src/orxonox/worldentities/Actionpoint.h	2015-11-29 17:07:43 UTC (rev 10887)
+++ code/branches/campaignHS15/src/orxonox/worldentities/Actionpoint.h	2015-11-29 17:36:21 UTC (rev 10888)
@@ -89,6 +89,8 @@
           </controller>
         </SpaceShip>
         
+        One can also use other Worldentities instead of Actionpoints just like Waypoints, but those points
+        will be included in loop.
         For more information read descriptions of the methods.
     */
     class _OrxonoxExport Actionpoint : public StaticEntity




More information about the Orxonox-commit mailing list