Objekte mit Scripten programmieren ed

Variablen-Typ ist model.

Das Verhalten eines Objektes kann durch spezielle Funktionen definiert werden, die von der Engine automatisch zu bestimmten Zeitpunkten ausgeführt werden (Callback-Funktionen):

Hierbei ist this jeweils das "eigene" Objekt.

Zu beachten ist, dass das Script nur ein einziges Mal existiert! Mehrere Objekte können sich das Script teilen, weshalb globale Variablen auch von all diesen Objekten geteilt werden.

Die Funktion void OnDelete(model this) hat den Sinn eines "Destructors". Hierin können zum Beispiel für das Objekt geladene Partikel, Sounds, etc. gelöscht werden.

Alle Objekte in der 3d-Welt sind in der Liste Object[] enthalten. Der Index ist für jedes Objekt fest, weswegen die Liste nach dem Löschen von Objekten Lücken enthalten kann.

Beispiel:

// per Makro einen Alias-Namen fuer die Objekt-Variable Nr 13 festlegen
#define _test	var[13]

void OnInit(model this)
    this.name = "Heinz" // Name in Heinz aendern
    this._test = 4.1

// solange das Objekt existiert seine Geschwindigkeit festhalten
void OnIterate(model this)
    this.vel = vector(100, 0, 0)

Beispiel: (komplizierter)

void OnInit(model this)
    float time_run = 0
    float min_distance = 200.0

// das Ego-Objekt verfolgen
void OnIterate(model this)

    // in welcher Richtung ist Ego?
    vector dpos = Ego.pos - this.pos
    float ang_y = atan2(dpos.z, dpos.x)
    float distance = VecLength(dpos)

    // in Ego-Richtung ausrichten
    this.ang = vector(0, ang_y, 0)

    // auf Ego zulaufen
    vector dir = dpos
    VecNormalize(dir)
    if distance > min_distance
        this.vel = dir * 100.0
    else
        this.vel = v0

    // Animation
    this.ResetAnimation()
    if distance > min_distance
        // vielleicht eine Lauf-Animation...
        this.Animate(MoveOpSet, 0, 0, 13, time_run, Elapsed, 0, true)