# Auflistung der Klassen

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