Partikel-Effekte programmieren ed

Der Variablen-Typ für ein einziges Partikel ist particle bzw. beam.

Erschaffen werden kann es mit CreateParticle, gelöscht mit XDelete

Um das Verhalten festzulegen, kann eine Callback-Funktion mitgegeben werden, die in jedem Frame ausgeführt wird, ein Pointer auf das Partikel wird dieser Funktion von der Engine als einziger Parameter mitgegeben.

Die Position (...->Pos) wird automatisch durch den aktuellen Wert der Geschwindigkeit (...->Vel) korregiert. Auch ...->TimeToLive zählt automatisch nach unten und sobald es negativ wird, wird das Partikel gelöscht.

Beispiel:

// Callback-Funktion
void EffectFunc( particle p )
{
    // langsam transparenter werden lassen
    p->Color.a -= elapsed / 4.0f;
    // loeschen, wenn es nicht mehr sichtbar ist
    if ( p->Color.a < 0 )
        p->TimeToLive = -1;
}

void Effect()
{
    vector pos = vector( 100, 100, 100 );
    int tex = LoadTexture( "aaa.tga" );
    int i = 0;

    // einmalig 10 Partikel in einer Reihe erstellen
    while( i < 10 ){

        // erstellen
        particle ptc = CreateParticle( &pos, tex,
                                       &EffectFunc,
                                       5,   // lebt 5 sec
                                       10); // 10 le Radius
        // Start-Werte festlegen
        ptc->Color = Green;                 // gruen faerben
        ptc->Vel = vector( 0, 100, 0 );     // mit 100 le/s nach oben fliegen lassen

        pos.x += 10;
        i ++;
    }
}

Weiterführend: Ein einfaches Partikel hängt in der Welt und hat immer die selbe Ausrichtung zur Kamera. Will man diese kontrollieren, muss es mit der Funktion CreateParticleRot erzeugt werden. Dadurch wird die Eigenschaft ...->Ang verwendbar. Ein beam schließlich ist ein langgezogenes Partikel und wird mit CreateBeam erschaffen. Es hat die zusätzliche Eigenschaft ...->Length als Vektor die Länge und Richtung des Strahles angibt.