Package pi.loop
Class GameLoop
java.lang.Object
pi.loop.GameLoop
Die Ereignisschleife der Engine.
In ihr wird die Verarbeitung der Eingaben des Benutzers angestoßen, die Berechnung neuer Weltzustände gestartet und das Erzeugen neuer Ausgaben angewiesen.
- Author:
- Michael Andonie, Niklas Keller
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGibt die aktuelle Szene aus.voidFügt eineAufgabein die Warteschlange ein, um ihn später auszuführen.longGibt die Anzahl an Einzelbilder aus, die seit dem Start des Spiels berechnet wurden.doubleGibt tatsächliche Anzeigedauer eines Einzelbilds in Sekunden aus.static voidvoidrender(RenderTarget renderTarget) voidrun()Führt die Haupt-Ereignisschleife aus, die kontinuierlich bis zur Unterbrechung des Threads läuft.
-
Constructor Details
-
GameLoop
-
-
Method Details
-
currentScene
Gibt die aktuelle Szene aus.- Returns:
- Die aktuelle Szene.
- Since:
- 0.42.0
-
frameCounter
Gibt die Anzahl an Einzelbilder aus, die seit dem Start des Spiels berechnet wurden.- Returns:
- Die Anzahl an Einzelbilder, die seit dem Start des Spiels berechnet wurden.
- Since:
- 0.42.0
-
frameDuration
Gibt tatsächliche Anzeigedauer eines Einzelbilds in Sekunden aus.- Returns:
- Die tatsächliche Anzeigedauer eines Einzelbilds in Sekunden.
- Since:
- 0.42.0
-
enqueue
Fügt eineAufgabein die Warteschlange ein, um ihn später auszuführen.- Parameters:
task- Die auszuführendeAufgabe.
-
run
public void run()Führt die Haupt-Ereignisschleife aus, die kontinuierlich bis zur Unterbrechung des Threads läuft. Die Methode orchestriert den gesamten Spielzyklus:- Berechnet die verstrichene Zeit seit dem letzten Frame (maximal 2x die gewünschte Frame-Dauer)
- Aktualisiert die aktuelle Szene mit der verstrichenen Zeit
- Ruft die
FrameUpdateListenerder aktuellen Szene auf. - Aktualisiert die Kamera der aktuellen Szene
- Verarbeitet alle ausstehenden Aufgaben aus der Dispatch-Queue
- Rendert den aktuellen Frame
- Synchronisiert die Frame-Rate durch Sleep-Mechanismus, um die gewünschte Frame-Dauer einzuhalten
- Berechnet die tatsächliche Frame-Dauer für den nächsten Zyklus
- Throws:
RuntimeException- wenn ein unerwarteter Fehler während der Ausführung der Loop auftritt
-
frameUpdateListener
-
render
-
main
-