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. More...
#include <Tile.h>


Public Types | |
| enum | TILE_TYP { FLOOR = 1, WALL = 2, PORTAL = 3 } |
Public Member Functions | |
| Tile () | |
| Default-Konstruktor. | |
| Tile (Vec &v0, Vec &v1, Vec &v2, Vec &v3, int typ, int zoneID, int zoneOTHER) | |
| Konstruktor (wird nur von SkyBox benoetigt) | |
| virtual | ~Tile () |
| Destruktor. | |
| void | setLightMap (LightMap *lightMap) |
| Registriert eine Lightmap fur diese Tile. | |
| int | getZoneID () |
| Getter fuer die ZoneID, zu der diese Tile gehoert. | |
| int | getPortalZoneID () |
| Getter fuer die angrenzende ZoneID (nur wenn diese Tile ein Portal ist) | |
| void | resetClipList () |
| Kopiere die Tilevertices in die Liste der ClippedVertices. | |
| void | resetVertices () |
| Setzt die Vertices wieder zurueck. | |
| void | reverseVertices () |
| Setzt die Vertices wieder zurueck. | |
| void | clip (Plane &p) |
| Clipped die ClippedVertices gegen die Plane. | |
| int | getTyp () |
| Liefert den Typ zurueckClipped die ClippedVertices gegen die Plane. | |
| bool | intersect (Vec &v0, Vec &v1) |
| Testet auf die naive Methode, ob die Gerade v0-->v1 die Tile schneidet Es wird die erste Seite der Tile als Gerade genommen und verschnitten. | |
| bool | intersectT (Vec &v0, Vec &v1) |
| Test, ob die Gerade v0-->v1 die Tile schneidet. | |
| bool | intersectTri (Vec &orig, Vec &dir, Vec &vc0, Vec &vc1, Vec &vc2, float *len) |
| Test, ob ein Strahl ein Dreieck schneidet (Algorithmus nach Moeller und Trumbore) | |
| void | transform (Matrix &mat) |
| Transformiert alle Vertices der Tile. | |
| void | transform (Matrix &matTrans, Matrix &matRotate, Matrix &matRotateLook) |
| Transformiert alle Vertices der Tile. | |
| void | project (float d) |
| Projiziere die Raumkoordinaten auf die ViewPlane (2D) | |
| void | calcTexelVertices () |
| void | triangulate () |
| Zerlegt das (geclippte) Polygon in Dreiecke. | |
| void | calcDistances (float d) |
| Berechnet die min und max Distanz der Tile zum Ursprung zureck Dabei werden alle Vertices verglichen und die min/max. Distanz ermittelt Das Ergebnis wir jeweils in m_minDist und m_maxDist abgelegt. | |
| int | getScrollFlag (void) |
| Getter fuer das Scrollflag. | |
| void | setScrollFlag (int scrollFlag) |
| Setter fuer das Scrollflag. | |
| void | dump (char *msg=0) |
| Obligatorische Dump-Methode. | |
| void | save (DataOutputStream &dataOut) |
| Serialisiert das Tile-Objekt in den Outputstream. | |
| void | load (DataInputStream &dataIn) |
| Liest das Tile-Objekt aus dem Inputstream. | |
Public Attributes | |
| long | m_id |
| HashKey | m_sid |
| int | m_typ |
| int | m_textureID |
| int | m_zoneID |
| int | m_portalZoneID |
| int | m_scrollFlag |
| int | m_animationID |
| float | m_d |
| Vertex * | m_vertexT |
| int | m_maxC |
| Vertex * | m_vertexC |
| float * | m_x |
| float * | m_y |
| float * | m_u |
| float * | m_v |
| int | m_maxTri |
| Triangle * | m_triangle |
| float | m_ambientLight |
| float | m_directionalLight |
| LightMap * | m_lightMap |
| float | m_minXDist2D |
| float | m_maxXDist2D |
| float | m_minYDist2D |
| float | m_maxYDist2D |
| float | m_minXDist3D |
| float | m_maxXDist3D |
| float | m_minYDist3D |
| float | m_maxYDist3D |
| float | m_minZDist3D |
| float | m_maxZDist3D |
| bool | m_hasLightMapGrid |
| BYTE | m_lightMapGrid [GRID_SAMPLES][GRID_SAMPLES] |
Static Public Attributes | |
| static const int | GRID_SAMPLES = 33 |
Private Member Functions | |
| void | initialize () |
| Allgemeine Objekt-Initialisierung. | |
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.
| enum Tile::TILE_TYP |
| Tile::Tile | ( | ) |
Default-Konstruktor.

Konstruktor (wird nur von SkyBox benoetigt)
| v0 | Vertex 1 'oben links' |
| v1 | Vertex 2 'oben rechts' |
| v2 | Vertex 3 'unten rechts' |
| v3 | Vertex 4 'unten links' |
| typ | FLOOR, WALL, PORTAL |
| zoneID | Nummer 'dieser' Zone |
| portalZoneID | Nummer der 'anderen' Zone. Nur valide, wenn diese Tile vom Typ PORTAL ist! |

| Tile::~Tile | ( | ) | [virtual] |
Destruktor.
| void Tile::calcDistances | ( | float | d | ) |
Berechnet die min und max Distanz der Tile zum Ursprung zureck Dabei werden alle Vertices verglichen und die min/max. Distanz ermittelt Das Ergebnis wir jeweils in m_minDist und m_maxDist abgelegt.
| d |

| void Tile::calcTexelVertices | ( | ) |


| void Tile::clip | ( | Plane & | p | ) |
| void Tile::dump | ( | char * | msg = 0 | ) |
Obligatorische Dump-Methode.
Reimplemented from Plane.


| int Tile::getPortalZoneID | ( | ) |
Getter fuer die angrenzende ZoneID (nur wenn diese Tile ein Portal ist)

| int Tile::getScrollFlag | ( | void | ) |
Getter fuer das Scrollflag.

| int Tile::getTyp | ( | ) |
Liefert den Typ zurueckClipped die ClippedVertices gegen die Plane.

| int Tile::getZoneID | ( | ) |
Getter fuer die ZoneID, zu der diese Tile gehoert.

| void Tile::initialize | ( | ) | [private] |
Allgemeine Objekt-Initialisierung.

Testet auf die naive Methode, ob die Gerade v0-->v1 die Tile schneidet Es wird die erste Seite der Tile als Gerade genommen und verschnitten.
| v0 | Geraden-Startpunkt |
| v1 | Geraden-Endpunktpunkt |
| v0 | Geraden-Startpunkt |
| v1 | Geraden-Endpunktpunkt |


Test, ob ein Strahl ein Dreieck schneidet (Algorithmus nach Moeller und Trumbore)
| orig | Strahlursprung |
| dir | Strahlrichtung |
| vc0 | Triangle-Vertex |
| vc1 | Triangle-Vertex |
| vc2 | Triangle-Vertex |
| t | Laenge des Stahls bis zum Schnittpunkt |


| void Tile::load | ( | DataInputStream & | dataIn | ) |
Liest das Tile-Objekt aus dem Inputstream.
| dataIn | DataInputStream |
| IOException |
Reimplemented from Polygon.


| void Tile::project | ( | float | d | ) |
Projiziere die Raumkoordinaten auf die ViewPlane (2D)
| d |

| void Tile::resetClipList | ( | ) |
Kopiere die Tilevertices in die Liste der ClippedVertices.

| void Tile::resetVertices | ( | void | ) |
Setzt die Vertices wieder zurueck.

| void Tile::reverseVertices | ( | void | ) |
Setzt die Vertices wieder zurueck.
| void Tile::save | ( | DataOutputStream & | dataOut | ) |
Serialisiert das Tile-Objekt in den Outputstream.
| dataOut | DataOutputStream |
| IOException |
Reimplemented from Polygon.


| void Tile::setLightMap | ( | LightMap * | lightMap | ) |
Registriert eine Lightmap fur diese Tile.
| lightMap | Pointer auf die Lightmap |
| void Tile::setScrollFlag | ( | int | scrollFlag | ) |
Setter fuer das Scrollflag.
| scrollFlag | 0--> nicht scrollen, !=1 scrollen |
| void Tile::transform | ( | Matrix & | mat | ) |
Transformiert alle Vertices der Tile.
| matTrans | Transformationsmatrix |
| matRotate | Rotationssmatrix |
| matRotateLook | matRotateLook |

| void Tile::triangulate | ( | ) |
Zerlegt das (geclippte) Polygon in Dreiecke.


const int Tile::GRID_SAMPLES = 33 [static] |
| float Tile::m_ambientLight |
| float Tile::m_d |
| float Tile::m_directionalLight |
| long Tile::m_id |
| int Tile::m_maxC |
| int Tile::m_maxTri |
| float Tile::m_maxXDist2D |
| float Tile::m_maxXDist3D |
| float Tile::m_maxYDist2D |
| float Tile::m_maxYDist3D |
| float Tile::m_maxZDist3D |
| float Tile::m_minXDist2D |
| float Tile::m_minXDist3D |
| float Tile::m_minYDist2D |
| float Tile::m_minYDist3D |
| float Tile::m_minZDist3D |
| int Tile::m_typ |
| float* Tile::m_u |
| float* Tile::m_v |
| float* Tile::m_x |
| float* Tile::m_y |
| int Tile::m_zoneID |