Example #1
0
void TimerAIEvent::Update(float dt)
{
	_duration -= dt;
	if( _duration < 0.0f )
	{
		IssueCallback();
	}
}
Example #2
0
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;
        }
    }
}
Example #3
0
void NamedEventAIEvent::Update(float dt)
{
	for( int i = 0; i < _eventIdList->size(); i++ )
	{
		if( _eventId == (*_eventIdList)[i] )
		{
			IssueCallback();
			return;
		}
	}
}
Example #4
0
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();

}