Spawn():de

From Valve Developer Community
Jump to: navigation, search
English
The Source engine entity initialisation process.

Spawn() ist eine void-Memberfunktion von CBaseEntity, welche über Vererbung jeder Entity in einem Source-Spiel zur Verfügung steht. Sie wird von der Engine aufgerufen wenn eine neue Instanz einer Entity erstellt wird, vergleichbar mit einem Konstruktor. Manche Basisklassen führen aus dieser Methode heraus Code aus, sodass man immer BaseClass::Spawn() in seiner eigenen Methode aufrufen sollte.

Spawn() wird verwendet, um Aufgaben zu erledigen, die erledigt werden müssen, bevor die Entity die Welt betritt, wozu in der Regel das Aufrufen von Precache() und SetSolid() gehört, das Initialisieren der VPhysics-Simulation und das einrichten globaler KI-Parameter.

Das Initialisieren der Variablen sollte im Konstruktor durchgeführt werden und nicht in der Spawn()-Methode, um um das Überschreiben von Daten zu vermeiden.

Achtung:
Spawn() wird sofort nach dem Erzeugen der Entity aufgerufen. Wenn dies während des Ladens eines Levels auftritt, gibt es keine Garantie dafür, dass andere Entitys bereits spawnten (außer sie werden durch die Entity selbst gespawnt). Deshalb ist jeder Code unzuverlässig, der die Entity nach anderen Entities suchen lässt oder sich mit diesen Verbinden lässt. Man sollte die Activate()-Methode für solche Aufgaben benutzen, welche aufgerufen wird, sobald alle Spawns durchgeführt wurden.
Tipp:CBasePlayer::Spawn() wird auch aufgerufen, wenn der Spieler respawnt. Man sollte InitialSpawn() für Code benutzen, der nur einmal laufen soll.

Beispiel

void CNPC_Antlion::Spawn()
{
	Precache();

	SetHullType( HULL_MEDIUM );
	SetHullSizeNormal();
	SetDefaultEyeOffset();
	
	SetNavType( NAV_GROUND );

	SetSolid( SOLID_BBOX );
	AddSolidFlags( FSOLID_NOT_STANDABLE );

	SetMoveType( MOVETYPE_STEP );

	...
}

Siehe auch