Back to bsyte

Tile Class Reference

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>

Inheritance diagram for Tile:
Collaboration diagram for Tile:

List of all members.

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
Vertexm_vertexT
int m_maxC
Vertexm_vertexC
float * m_x
float * m_y
float * m_u
float * m_v
int m_maxTri
Trianglem_triangle
float m_ambientLight
float m_directionalLight
LightMapm_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.

Detailed Description

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.


Member Enumeration Documentation

Enumerator:
FLOOR 
WALL 
PORTAL 

Constructor & Destructor Documentation

Tile::Tile ( )

Default-Konstruktor.

Here is the call graph for this function:

Tile::Tile ( Vec v0,
Vec v1,
Vec v2,
Vec v3,
int  typ,
int  zoneID,
int  portalZoneID 
)

Konstruktor (wird nur von SkyBox benoetigt)

Parameters:
v0Vertex 1 'oben links'
v1Vertex 2 'oben rechts'
v2Vertex 3 'unten rechts'
v3Vertex 4 'unten links'
typFLOOR, WALL, PORTAL
zoneIDNummer 'dieser' Zone
portalZoneIDNummer der 'anderen' Zone. Nur valide, wenn diese Tile vom Typ PORTAL ist!

Here is the call graph for this function:

Tile::~Tile ( ) [virtual]

Destruktor.


Member Function Documentation

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.

Parameters:
d

Here is the caller graph for this function:

void Tile::calcTexelVertices ( )

Here is the call graph for this function:

Here is the caller graph for this function:

void Tile::clip ( Plane p)

Clipped die ClippedVertices gegen die Plane.

Parameters:
pdie Plane gegen die diese Tile geclipped wird

Reimplemented from Polygon.

Here is the call graph for this function:

Here is the caller graph for this function:

void Tile::dump ( char *  msg = 0)

Obligatorische Dump-Methode.

Reimplemented from Plane.

Here is the call graph for this function:

Here is the caller graph for this function:

int Tile::getPortalZoneID ( )

Getter fuer die angrenzende ZoneID (nur wenn diese Tile ein Portal ist)

Returns:
zoneID

Here is the caller graph for this function:

int Tile::getScrollFlag ( void  )

Getter fuer das Scrollflag.

Returns:
0--> nicht scrollen, !=1 scrollen

Here is the caller graph for this function:

int Tile::getTyp ( )

Liefert den Typ zurueckClipped die ClippedVertices gegen die Plane.

Returns:
WALL, PORTAL, FLOOR

Here is the caller graph for this function:

int Tile::getZoneID ( )

Getter fuer die ZoneID, zu der diese Tile gehoert.

Returns:
zoneID

Here is the caller graph for this function:

void Tile::initialize ( ) [private]

Allgemeine Objekt-Initialisierung.

Here is the caller graph for this function:

bool Tile::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.

Parameters:
v0Geraden-Startpunkt
v1Geraden-Endpunktpunkt
Returns:
true-->Gerade schneidet die Tile, false-->Gerade schneidet nicht die TileTestet auf die naive Methode, ob die Gerade v0-->v1 die Tile schneidet Es wird die erste Seite der Tile als Gerade genommen und verschnitten
Parameters:
v0Geraden-Startpunkt
v1Geraden-Endpunktpunkt
Returns:
true-->Gerade schneidet die Tile, false-->Gerade schneidet nicht die Tile

Here is the call graph for this function:

Here is the caller graph for this function:

bool Tile::intersectT ( Vec v0,
Vec v1 
)

Test, ob die Gerade v0-->v1 die Tile schneidet.

Parameters:
v0Geraden-Startpunkt
v1Geraden-Endpunktpunkt
Returns:
true-->Gerade schneidet die Tile, false-->Gerade schneidet nicht die Tile

Here is the call graph for this function:

Here is the caller graph for this function:

bool Tile::intersectTri ( Vec orig,
Vec dir,
Vec vc0,
Vec vc1,
Vec vc2,
float *  t 
)

Test, ob ein Strahl ein Dreieck schneidet (Algorithmus nach Moeller und Trumbore)

Parameters:
origStrahlursprung
dirStrahlrichtung
vc0Triangle-Vertex
vc1Triangle-Vertex
vc2Triangle-Vertex
tLaenge des Stahls bis zum Schnittpunkt
Returns:
true-->Strahl schneidet das Dreieck, false-->Kein Schnittpunkt

Here is the call graph for this function:

Here is the caller graph for this function:

void Tile::load ( DataInputStream dataIn)

Liest das Tile-Objekt aus dem Inputstream.

Parameters:
dataInDataInputStream
Exceptions:
IOException

Reimplemented from Polygon.

Here is the call graph for this function:

Here is the caller graph for this function:

void Tile::project ( float  d)

Projiziere die Raumkoordinaten auf die ViewPlane (2D)

Parameters:
d

Here is the caller graph for this function:

void Tile::resetClipList ( )

Kopiere die Tilevertices in die Liste der ClippedVertices.

Here is the caller graph for this function:

void Tile::resetVertices ( void  )

Setzt die Vertices wieder zurueck.

Here is the caller graph for this function:

void Tile::reverseVertices ( void  )

Setzt die Vertices wieder zurueck.

void Tile::save ( DataOutputStream dataOut)

Serialisiert das Tile-Objekt in den Outputstream.

Parameters:
dataOutDataOutputStream
Exceptions:
IOException

Reimplemented from Polygon.

Here is the call graph for this function:

Here is the caller graph for this function:

void Tile::setLightMap ( LightMap lightMap)

Registriert eine Lightmap fur diese Tile.

Parameters:
lightMapPointer auf die Lightmap
void Tile::setScrollFlag ( int  scrollFlag)

Setter fuer das Scrollflag.

Parameters:
scrollFlag0--> nicht scrollen, !=1 scrollen
void Tile::transform ( Matrix mat)

Transformiert alle Vertices der Tile.

Parameters:
matTransformationsmatrix

Reimplemented from Polygon.

Here is the call graph for this function:

Here is the caller graph for this function:

void Tile::transform ( Matrix matTrans,
Matrix matRotate,
Matrix matRotateLook 
)

Transformiert alle Vertices der Tile.

Parameters:
matTransTransformationsmatrix
matRotateRotationssmatrix
matRotateLookmatRotateLook

Here is the call graph for this function:

void Tile::triangulate ( )

Zerlegt das (geclippte) Polygon in Dreiecke.

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

const int Tile::GRID_SAMPLES = 33 [static]
float Tile::m_d
long Tile::m_id
float* Tile::m_u
float* Tile::m_v
float* Tile::m_x
float* Tile::m_y

The documentation for this class was generated from the following files: