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 |