UnrealScript:
Code: Select all
//*****************************PawnActors - Pawnlist iterator
native final function iterator PawnActors( class<Pawn> PawnClass, out pawn P, optional float Distance, optional vector VOrigin, optional bool bHasPRI);
//*****************************NavigationActors - navigationPointList iterator
native final function iterator NavigationActors( class<NavigationPoint> NavClass, out NavigationPoint P, optional float Distance, optional vector VOrigin, optional bool bVisible);
C++:
PawnActors
Code: Select all
void ABotz::execPawnActors(FFrame &Stack, RESULT_DECL)
{
guard(ABotz::execPawnActors);
P_GET_CLASS(BaseClass);
P_GET_PAWN_REF(P);
P_GET_FLOAT_OPTX(dist,0.0);
P_GET_VECTOR_OPTX(aVec,this->Location);
P_GET_UBOOL_OPTX(bPRI,false);
P_FINISH;
BaseClass = BaseClass ? BaseClass : APawn::StaticClass();
APawn *PP = Level->PawnList;
dist = dist * dist;
PRE_ITERATOR;
*P = NULL;
while( PP && *P == NULL )
{
if ( PP->IsA(BaseClass) )
{
if ( !bPRI || PP->PlayerReplicationInfo != NULL )
{
if ( dist <= 0.0 || FVector(PP->Location - aVec).SizeSquared() < dist )
*P = (APawn*)PP;
}
}
PP = PP->nextPawn;
}
if ( *P == NULL )
{
Stack.Code = &Stack.Node->Script(wEndOffset + 1);
break;
}
POST_ITERATOR;
unguard;
}
Code: Select all
void ABotz::execNavigationActors(FFrame &Stack, RESULT_DECL)
{
guard(ABotz::execNavigationActors);
P_GET_CLASS(BaseClass);
P_GET_NAVIG_REF(N);
P_GET_FLOAT_OPTX(dist,0.0);
P_GET_VECTOR_OPTX(aVec,this->Location);
P_GET_UBOOL_OPTX(bTrace,false);
P_FINISH;
BaseClass = BaseClass ? BaseClass : ANavigationPoint::StaticClass();
ANavigationPoint *NN = Level->NavigationPointList;
dist = dist * dist;
PRE_ITERATOR;
*N = NULL;
while( NN && *N == NULL )
{
if ( NN->IsA(BaseClass) )
{
if ( dist <= 0.0 || FVector(NN->Location - aVec).SizeSquared() < dist )
*N = (ANavigationPoint*)NN;
}
NN = NN->nextNavigationPoint;
}
if ( *N == NULL )
{
Stack.Code = &Stack.Node->Script(wEndOffset + 1);
break;
}
POST_ITERATOR;
unguard;
}