Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 10654


Ignore:
Timestamp:
Oct 18, 2015, 8:53:37 PM (9 years ago)
Author:
gania
Message:

changed AIController → collecting data about spaceships with each action()

Location:
code/branches/AI_HS15/src/orxonox/controllers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/AI_HS15/src/orxonox/controllers/AIController.cc

    r10652 r10654  
    105105        if (this->state_ == MASTER)
    106106        {
     107           
     108            //-------------------------------------------------------
     109            //collect data for AI behaviour
     110            Vector3 meanOfEnemies;
     111            Vector3 meanOfAllies;
     112
     113            for (ObjectList<AIController>::iterator it = ObjectList<AIController>::begin(); it; ++it)
     114            {
     115
     116                Gametype* gt=this->getGametype();
     117                if (!gt)
     118                {
     119                    gt=it->getGametype();
     120                }
     121                if (!FormationController::sameTeam(this->getControllableEntity(), it->getControllableEntity(),gt))
     122                {
     123                    enemies.push_back(*it);
     124                }
     125                else {
     126                    allies.push_back(*it);
     127                }
     128            }
     129            if (enemies.size() != 0 && allies.size() != 0){
     130            for (std::vector<AIController*>::iterator it = enemies.begin() ; it != enemies.end(); ++it)
     131                meanOfEnemies += (*it)->getControllableEntity()->getPosition();
     132            meanOfEnemies /= enemies.size();
     133            for (std::vector<AIController*>::iterator it = allies.begin() ; it != allies.end(); ++it)
     134                meanOfAllies += (*it)->getControllableEntity()->getPosition();
     135            meanOfAllies /= allies.size();
     136            //orxout(internal_error) << "There are " << enemiesCounter << " enemies, mean position is " << meanOfEnemies << endl;
     137            orxout(internal_error) << "Distance is " << (meanOfEnemies-meanOfAllies).length() << endl;
     138            orxout(internal_error) << "mean of Allies is " << meanOfAllies << ", with a size " << allies.size() << endl;
     139            orxout(internal_error) << "mean of Enemies is " << meanOfEnemies << ", with a size " << enemies.size() << endl;
     140            }
     141            //-------------------------------------------------------
     142           
    107143
    108144            this->setFormationMode(ATTACK);
     
    116152
    117153                 // make 180 degree turn - a specific Master Action
     154                /*
    118155                random = rnd(1000.0f);
    119156                if (random < 5)
     
    125162                   this->spinInit();
    126163
     164                */
    127165                /*// follow a randomly chosen human - a specific Master Action
    128166                random = rnd(1000.0f);
     
    146184            }
    147185        }
    148 
     186        allies.clear();
     187        enemies.clear();
    149188    }
    150189
  • code/branches/AI_HS15/src/orxonox/controllers/AIController.h

    r9667 r10654  
    5454
    5555            Timer actionTimer_; //<! Regularly calls action().
     56            std::vector<AIController*> enemies, allies;
    5657    };
    5758}
Note: See TracChangeset for help on using the changeset viewer.