Software

Umgesetzt wurde das Projekt in C++ mithilfe der Grafikbibliothek OpenGL für die 3D-Grafik und der GUI-Bibliothek Qt für das Fenstermanagement, die Ein- und Ausgabe sowie das Menü.

Die Abbildung verdeutlicht das Verhältnis der wichtigsten Klassen im 3Dali-System. Die Klasse MainWidget steuert die grundlegende Darstellung, wie Fenstergröße und das Verhalten beim Beenden des Programms. Hier werden auch die Welt-Parameter aus der ASCII-Welt-Datei eingelesen und ein DisplayWigdet-Objekt als Kind des MainWidgets angelegt. Eine solche child -Beziehung ist für jedes Qt-Widget definiert.

In der Klasse DisplayWidget, die von der Qt-Klasse QGLWidget abstammt, wird die Anzeige der OpenGL-Inhalte vorgenommen und die Inputeingabe an den InputHandler weitergegeben. Dort werden die Tastatur- und Mauseingaben der Navigation zugeordnet. Außerdem ist die Klasse DisplayWidget für die Objektauswahl bzw. -manipulation und das Anzeigen des Kontextmenüs zuständig.

In der Klasse World wird der Szenegraph eingelesen und dargestellt. Hier finden sich auch Methoden zum Laden und Speichern der Welt. Die Klasse MenuWidget ist eine Implementierung einer Qt-eigenen Klasse für Dialogfenster. Sie enthält die Menüoptik und -funktionalität, d.h. hier wird die Reaktion auf eine Buttonaktivierung definiert. Qt verwendet für die Interaktion des Benutzers mit dem grafischen Interface einen signal / slot-Mechanismus: Signale senden Nachrichten aus Objekten heraus (z.B. Button gedrückt) und Slots empfangen diese Nachrichten (z.B. eine Methode zum Öffnen des Hilfefensters). Die Verknüpfung dieser Signale und Slots, also die Zuordnung der Methoden zu den Buttonereignissen, geschieht ebenfalls in der Klasse MenuWidget.