wait (var time);
Hält die aktuelle Funktion für einen Framezyklus oder eine gegebene Zeit an und geht dann weiter. Läßt während er Wartezeitandere Funktionen laufen.
Parameter:
time - entweder 1, um einen Frame zu waren oder eine negative Zahl zwischen -0.01 .. -60 zum Warten der gegebenen Anzahl von Sekunden.
Geschwindigkeit:
Mittel
Bemerkungen:
- Wait beendet die
Funktion vorübergehend (ähnlich wie return) , speichert
ihre lokalen Variablen, sowie die my- und you-Pointer, speichert
den Status der Funktion in einer internen Liste /scheduler List) und kehrt
- falls es eine gibt - zu der aufrufenden Funktion zurück.
Nach der Wartezeit werden die lokalen Variablen sowie die my-
und you-Pointer wiederhergestellt und die Funktion wird
beginnend mit der ersten, auf wait folgenden, Zeile wieder aufgenommen.
- Während der Wartezeit einer Funktion laufen
sämtliche anderen Funktionen weiter - einschliesslich der aufrufenden
Funktion. Es können sich also mit Ausnahme von my und you alle
globalen Variablen und Pointer ändern. !! Während der Inhalt lokaler Variablen beibehalten wird, können sich ihre Adressen nach jedem wait() ändern, denn die Funktion läuft jedes mal in einem anderen Bereich des Stacks.
- Wait(1)
wird oft am Ende einer while-Schleife, die einmal pro Framezyklus ausgeführt
werden soll, verwendet.
- Die kürzeste Wartezeit ist
ein Framezyklus, die längste eine Minute per wait(-60). Wollen Sie eine längere Wartezeit,
benutzen Sie eine Schleife.
- Wartende Funktionen werden in der Reihenfolge ihrer letzten wait()-Ausführung
in der Scheduler
List gespeichert. Diese Reihenfolge läßt sich mithilfe der Variablen
proc_mode (lite-C) bzw. der Funktion proc_late (C-Skript) verändern. Mit der Funktion engine_gettaskinfo läßt sich die Schedular List untersuchen.
Beispiele:
// let an entity light up for half a second, and then rotate it permanently
action rotator()
{
my.ambient = 100; // increase brightness
wait(-0.5); // wait 0.5 seconds
my.ambient = 0; // normal brightness
while (1) {
my.pan += 3*time_step; // rotate entity by 3 degrees per tick
wait(1); // wait one frame, then repeat
}
}
Siehe auch:
return, time_step, timer, num_actions, engine_gettaskinfo
► Aktuelle Version Online