Objekte mit Scripten programmieren ed

Variablen-Typ ist Model.

Im Editor kann einem Modell eine Script-Datei zugeordnet werden. Wird in dieser Datei eine neue Klasse definiert, die von Model abgeleitet ist, so wird das entsprechende Modell als eine Instanz dieser Klasse erschaffen.

Callback Funktionen ed

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

Im Array Model.var[] stehen Werte, die dem Modell im Editor zugeordnet wurden. Sie können auch in Scripten verändert werden und werden übers Netzwerk synchronisiert.

Um dem Modell weitere Variablen (auch anderen Typs) zuzuordnen, können beim Definieren der Klasse einfach weitere Elemente hinzugefügt werden.

Beispiele ed

sonstiges ed

Variablen ed

class MyModel : Model
    // zusätzliche Elemente
    string stupid_string

    overwrite void onInit()
        name = "Heinz" // Name in Heinz ändern
        _test = 4.1

    // solange das Objekt existiert seine Geschwindigkeit festhalten
    overwrite void onIterate()
        vel = vector(100, 0, 0)

    overwrite void onInit()
        time_run = 0
        min_distance = 200.0
class MyModel : Model
    // das Ego-Objekt verfolgen
    overwrite void onIterate()
// solange das Objekt existiert seine Geschwindigkeit festhalten
        // in welcher Richtung ist Ego?
        vector dpos = Ego.pos - pos
        float ang_y = atan2(dpos.z, dpos.x)
        float distance = dpos.length()

        // in Ego-Richtung ausrichten
        QuaternionRotationV(ang, vector(0, ang_y, 0))
void OnIterate(model this)
        // auf Ego zulaufen
        vector dir = dpos
        dir.normalize()
        if distance > min_distance
            vel = dir * 100.0
        else
            vel = v0

        // Animation
        this.resetAnimation()
        if distance > min_distance
            // vielleicht eine Lauf-Animation...
            animate(MoveOpSet, 0, 0, 13, time_run, Engine.elapsed, 0, true)

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

    // auf Ego zulaufen
    vector dir = dpos
    dir.normalize()
    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, Engine.elapsed, 0, true)