void TimerAIEvent::Update(float dt) { _duration -= dt; if( _duration < 0.0f ) { IssueCallback(); } }
void TraversalAIEvent::Update(float /*dt*/) { if( _numIterationsPerFrame < 0 ) { _traversal->ExecuteFullTraversal(); IssueCallback(); return; } for( int i = 0; i < _numIterationsPerFrame; i++ ) { //callback when we're done if( !_traversal->DoNextTraversal() ) { IssueCallback(); return; } } }
void NamedEventAIEvent::Update(float dt) { for( int i = 0; i < _eventIdList->size(); i++ ) { if( _eventId == (*_eventIdList)[i] ) { IssueCallback(); return; } } }
void GotoAIEvent::Update(float /*dt*/) { Sentient* pActor = GetActor(); PathFinderMove move; GetPathfinder().FindNextMove( pActor->GetPosition(), _destination, _arrivalDist, move ); if( move.LastResult == PathFinder::PFMR_PATH_FOUND) { pActor->ApplyImpulse( move.MoveDir * _moveSpeed * pActor->GetBody()->GetMass(), Vector2::Zero ); } else if( move.LastResult == PathFinder::PFMR_ARRIVED ) { _moveFailed = false; IssueCallback(); } else if( move.LastResult == PathFinder::PFMR_PATH_NOT_FOUND ) { _moveFailed = true; IssueCallback(); } }
void GotoTargetAIEvent::Update(float dt) { ActorSet taggedActors = theTagList.GetObjectsTagged(_targetTag); for( ActorSet::iterator itr = taggedActors.begin(); itr != taggedActors.end(); itr++ ) { Actor* pTargetActor = (*itr); if( theSpatialGraph.IsInPathableSpace( pTargetActor->GetPosition() ) ) { _destination = pTargetActor->GetPosition(); GotoAIEvent::Update( dt ); return; } } //otherwise, we failed _moveFailed = true; IssueCallback(); }