void AIControl::poll() { if(state==PURSUE) { pursue(vector3df(0,25,0)); } else if (state==FLEE) { flee(vector3df(0,25,0)); } }
void AiPursue::writeState(ESM::AiSequence::AiSequence &sequence) const { std::auto_ptr<ESM::AiSequence::AiPursue> pursue(new ESM::AiSequence::AiPursue()); pursue->mTargetActorId = mTargetActorId; ESM::AiSequence::AiPackageContainer package; package.mType = ESM::AiSequence::Ai_Pursue; package.mPackage = pursue.release(); sequence.mPackages.push_back(package); }
//Behaviour based AI void Enemy::behavTest() { Shape* player = getPlayer_(); if (player) { b2Vec2 pos = player->getPosition(); b2Vec2 toward = getPosition() - pos; float dist = (player->getSize() + size_) * 1.5f; b2Vec2 vel = player->getBody()->GetLinearVelocity(); b2Vec2 steer = pursue(pos, vel, dist); move(steer); orient(-toward); } }
void yarrAIPsycho :: think() { // save yourself! avoid_bullets(); // look for something to kill //getvisible(); //spaceShip* enemy = seen.back(); spaceShip* enemy = getclosest(); if( enemy != NULL ) { pursue(enemy); attack(enemy); } else wander(); // or just wander around if nothing's around }