Hier folgt die Aufzählung aller Klassen, Strukturen, Varianten und Schnittstellen mit einer Kurzbeschreibung:
| Animation | Zustandklasse fuer eine Animation |
| AnimationManager | Container fuer alle Animationen |
| Camera | Repraesentiert die Camera, bzw. das Auge des Spielers das in der Spitze des Frustums sitzt. Konkret wird die Camera in der Map bewegt. Nach einem 'Move' wird die Transformationsmatrix der Camera bezogen zum zum Ursprung berechnet um anschliessend die Weltobjekte in das Frustum zu transformieren |
| Canvas3D | Schnittstelle zur Render-Engine. Beinhaltet OS-spezifische Unterscheidungen |
| DataInputStream | Wrapperklasse zum lesen von Daten aus einer Binaerdatei. Die Binaerdatei wird aus einer Java-Applikation heraus geschrieben. Daher sind einige Besonderheiten bzgl. der unterschiedlichen Ablage von Variablen zu beachten (Stichwort 'Byteorder' von Integers, Floats und Doubles) |
| DataOutputStream | DataOutputStream |
| Engine | Die Hauptklasse der 3D Engine Dieser Klasse beinhaltet ALLE Methoden, die fuer die Nutzung der Engine benoetigt werden |
| EngineIO | EngineIO |
| Frustum | Das Frustum ist der Sichtpyramide mit (normalerweise) vier Seiten, an deren Spitze sich das Auge des Betrachters, bzw. die Camera befindet. Die Frustumspitze ist fest verankert in 0,0,0. Wenn also die Camera, bzw. der Spieler den Standort aendert, wird die Welt in das Frustum hineinbewegt. Das ist nicht optimal. Performanter waere es, das Frustum mit der Camera zu bewegen. Auf der anderen Seite vereinfacht es einige Algorithmen, wenn der Ursprung in 0,0,0 sitzt |
| Image | Generische Klasse fuer Images, Bitmaps |
| Light | Containerklasse fuer alle Lichtquellen |
| LightManager | |
| LightMap | LightMap |
| LightPoint | Klasse fuer ein Punktlicht |
| LightZone | Klasse fuer eine Zone: Es gibt nur eine Lichtumgebung pro Zone In einer Zone kann es nur ein Directional Light geben Eine Zone kann beliebig viele PointLights enthalten |
| Line | Klasse einer Line |
| Logging | Einfache Logging-Klasse (noch nicht wirklich implementiert) |
| Map | Container fuer die Map |
| Material | Container fuer ein Material |
| MaterialManager | Container fuer alle Materialien |
| Matrix | Matrixklasse |
| Object2D | Beschreibt ein rechteckiges 2D-Objekt im 3D-Raum (typ. Sprites, Partikel...) |
| Partikel | Partikel werden fuer die Darstellung von Feuer, Rauch, Funken, Regen usw. verwendet. Typ. wird ein Partikel durch ein 2D-Objekt repraesentiert, dem eine semitransparente Bitmap (hier Sprite genannt) fuer die Darstellung zugeordnet ist. Partikel koennen sich bewegen oder auch stationaer zein (Blinklichter). Sie haben eine Emitter, einen Lebenszyklus und noch ein paar weitere Attribute. Um 'realistische' Bewegungsablaeufe zu simulieren, wird stark mit Zufallswerten gearbeitet |
| PartikelManager | Muesste eigentlich PartikelSystemManger heissen. Es verwaltet alle Partikelsysteme und alle Sprites, die fuer die Darstellung der einzelnen Partikel gebraucht werden |
| PartikelSystem | Ein Partikelsystem beschreibt das Verhalten von Partikeln, die zu diesem System gehoeren |
| Plane | Plane |
| Renderer | Die Hauptklasse der Renderer 3D Engine Dieser Klasse beinhaltet ALLE Methoden, die fuer die Nutzung der Engine benoetigt werden |
| SkyBox | SkyBox Klasse |
| Sprite | Sprites werden fuer Partikel verwendet. Eine Sprite ist wie eine Texture, nur einfacher gestrickt. Ausserdem sind die Pixel einer Sprite semitransparent |
| SpriteMapper | Rendert die Sprites (2D-Objekte) auf die Canvas unter Beruecksichtigung der Smitransparenz |
| Surface | Eine Surface (Oberflaeche) besteht aus Textur + Lightmap Die Datenablage erfolgt maximal performant fuer den TexturMapper --> RGB pro Pixel |
| SurfaceCache | Der SurfaceCache ist ein Container fuer alle Surfaces, die in einem Frame gerendert werden müssen. Die Anzahl der Surfaces im Cache ist auf MAX_SURFACES begrenzt. Damit der Cache nicht ueberlaeuft, muessen ungenutzte Eintraege entfernt werden. Die Strategie sieht wie folgt aus: Jedes Surfaceobjekt besitzt einen Zaehler der in der Methode refresh() inkrementiert wird. Erreicht der Zaehler eine bestimmte Grenze (MAX_DROP), wird das Objekt aus dem Cache entfernt. Typ. wird refresh() bei jedem Frame einmal aufgerufen. Jeder Aufruf der Methode getSurface() setzt den Zaehler auf 0 zurueck. Wird ein Surfaceobjekt immer wieder fuer ein Frame verwendet, kann der Zaehler nicht die Grenze erreichen und wird damit auch nicht aus dem Cache entfernt. Diese Strategie minmiert dynamisch den Speicherbedarf. Nachteil: Bewegt sich die Kamera uber eine laengere Zeit nicht, werden alle nichtgenutzten Surfaces aus dem Cache entfernt. Wird nun die Kamera position veraendert (z.B. durch Drehen) muessen alle neuen Surfaces in den Cache geladen werden. Das macht sich durch einen Einbruch in der Framerate bemerkbar. Besser: Den Fuellstand des Caches immer voll ausnutzen. Erst wenn mehr 100% erreicht wurde, nicht genutzte Surfaces entfernen |
| TArc | TArc |
| Text | Einfache Textklasse |
| TextMapper | TextMapper Klasse |
| Texture | Eine Texture |
| TextureMapper | Projiziert eine Texture aus dem 3D Raum in den 2D Raum |
| Tile | Die Tile ist eine Spezialisierung eines Polygons. Es beschreibt ein Rechteck im 3D-Raum. Der Tile ist eine Textur zugewiesen, die genau in diese vier Eckpunkte eingespannt ist. Sie wird im Texuremapper auf die Canvas projiziert |
| Timer | Allgemeine Klasse fuer einen hochaufloesenden Timer (Plattformabhaengig, siehe WIN32 Sections) |
| Triangle | Triangle |
| Trigger | Zeitgesteuerte Zustandsklasse |
| Vec | 3D-Vektor (Linkshaendiges Koordinatensystem) |
| Vertex | Vertex (Abgeleitet von einem Vec(tor) und um u,v Koordinaten erweitert) |
| Zone | Container-Klasse fuer alle Tiles die zu einer Zone gehoeren |