UTIL_EntitiesInBox
< De
UTIL_EntitiesInBox ist ein UTIL , bereitgestellt durch den Source code, um Entities innerhalb einer Box zu finden. Es nimmt eine Entity-Liste, Minimum, Maximum und Flags und liefert eine Anzahl von Entities und eine Liste der Entities.
Benutzung
//-----------------------------------------------------------------------------
// Zweck : Liefert die Anzahl der Entities in der Box plus ein Array von Pointern auf die Entities.
//
// Input : CBaseEntity - *pList | Ein Pointer auf ein Array, in dem die Funktion die Pointer auf die Entities speichern wird.
// Input : int - listMax | Maximale Anzahl der zurückzugebenden Entities.
// Input : Vector - &mins | Das Minimum der zu prüfenden Box. Weltkoordinaten.
// Input : Vector - &maxs | Das Maximum der zu prüfenden Box. Weltkoordinaten.
// Input : int - flagmask |
// Output: *pList
// Output: int - Liefert die Anzahl der gefundenen Entities
//-----------------------------------------------------------------------------
inline int UTIL_EntitiesInBox( CBaseEntity **pList, int listMax, const Vector &mins, const Vector &maxs, int flagMask )
//-----------------------------------------------------------------------------
// Zweck : Liefert die Anzahl der Entities in der Box.
//
// Input : Vector - &mins | Das Minimum der zu prüfenden Box. Weltkoordinaten.
// Input : Vector - &maxs | Das Maximum der zu prüfenden Box. Weltkoordinaten.
// Input : CFlaggedEntitiesEnum *pEnum | TODO
// Output: int - Liefert die Anzahl der gefundenen Entities
//-----------------------------------------------------------------------------
int UTIL_EntitiesInBox( const Vector &mins, const Vector &maxs, CFlaggedEntitiesEnum *pEnum );
flagmask ist in const.h, Zeilen 97-132, verfügbar
Beispiele
//Erzeugt ein Array mit CBaseEntity-Pointern
CBaseEntity* pList[20];
//Legt die Pointer in pList und speichert die Anzahl der Entities
int count = UTIL_EntitiesInBox( pList, 20, spawnOrigin + NAI_Hull::Mins( HULL_MEDIUM ), spawnOrigin + NAI_Hull::Maxs( HULL_MEDIUM ), 0 );
//Iteriert über alle möglichen Ziele
for ( int i = 0; i < count; i++ )
{
//Wenn ein einzelner movetype einer Entity nicht MOVETYPE_VPHYSICS ist, wird der Rest der Schleife übersprungen und am Anfang vortgesetzt
if ( pList[i]->GetMoveType() != MOVETYPE_VPHYSICS )
continue;
if ( PhysGetEntityMass( pList[i] ) > ANTLION_MAKER_BLOCKED_MASS )
{
bBlocked = true;
iNumBlocked++;
pBlocker = pList[i];
if ( pTestHint == pNode )
{
bChosenHintBlocked = true;
}
break;
}
}
//verwendet die überladene Funktion und liefert nur die Anzahl der Entities.
CBaseEntity *entityList[64];
Vector range(ROLLERMINE_WAKEUP_DIST,ROLLERMINE_WAKEUP_DIST,64);
int boxCount = UTIL_EntitiesInBox( entityList, ARRAYSIZE(entityList), GetAbsOrigin()-range, GetAbsOrigin()+range, FL_NPC );