#include <LightManager.h>
Öffentliche Methoden | |
| virtual | ~LightManager () |
| Destruktor. | |
| void | addEnvironment (int zone, float ambient, float directionalMax, float pointMax) |
| Fuegt ein LightEnvironment hinzu. | |
| void | setDirectionalLight (int zone, float dirX, float dirY, float dirZ) |
| Fuegt DirectionalLight hinzu. | |
| void | addPointLight (int zone, float x, float y, float z) |
| Fuegt ein PointLight hinzu. | |
| void | calcPointLight (Tile &tile, LightZone &le) |
| Berechnet die Lichtintensitaet fuer eine Tile. Weil das Directional Light unabhaengig von der Cameraposition ist, muss die Lichtintensitaet pro Tile nur einmal berechnet werden. Das passiert sinnvoller weise nachden die Richtung der Lichtquelle gesetzt wurde, und bevor die Map zum ersten mal transformiert, bzw. gerendert wird. | |
| void | calcLightMapGrid (Tile &tile) |
| Berechnet die Lichtintensitaet an den Stuetzstellen einer Tile. Hier werden das Ambient- Directional- und die PoinLight-Komponenten beruecksichtigt. | |
| void | calcLightMap (Tile &tile) |
| Berechnet die Lichtintensitaet fuer eine Tile. Weil das Directional Light unabhaengig von der Cameraposition ist, muss die Lichtintensitaet pro Tile nur einmal berechnet werden. Das passiert sinnvoller weise nachden die Richtung der Lichtquelle gesetzt wurde, und bevor die Map zum ersten mal transformiert, bzw. gerendert wird. | |
| void | toggleAmbientLight () |
| Schaltet das Ambient Light ein oder aus. | |
| void | toggleDirectionalLight () |
| Schaltet das Directional Light ein oder aus. | |
| void | toggleLightMap () |
| Schaltet das Directional Light ein oder aus. | |
| void | stepGamma (bool up) |
| Korrigiert den Gammawert. | |
| bool | isAmbientON () |
| Info ob AmbientLight ON oder OFF. | |
| bool | isDirectionalON () |
| Info ob DirectionalLight ON oder OFF. | |
| bool | isLightMapON () |
| Info ob LightMaps ON oder OFF. | |
| void | calcGamma (float gamma) |
| Berechnet die Gamma-Rampe. | |
| void | load (DataInputStream &dataIn) |
| Liest das Light-Objekt aus dem Inputstream. | |
| void | save (DataOutputStream dataOut) |
| Serialisiert das Light-Objekt in den Outputstream. | |
| void | dump () |
| Obligatorische dump-Methode fuer Debugzwecke. | |
Öffentliche, statische Methoden | |
| static LightManager * | getInstance () |
| Liefert die Singleton-Instanz. | |
Öffentliche Attribute | |
| std::vector< LightZone * > | lightZoneList |
| std::vector< LightMap * > | lightMaps |
| float | m_gamma |
| int | m_gammaR [256] |
| int | m_gammaG [256] |
| int | m_gammaB [256] |
Geschützte Methoden | |
| LightManager () | |
| Konstruktor, Singleton. | |
Private Methoden | |
| void | calcLightMapGrid (Tile &tile, LightZone &le) |
| Berechnet die Lichtintensitaet an den Stuetzstellen (Grid) fuer eine Tile. | |
| LightZone * | getLightZone (int zone) |
| Getter fuer das LightEnvironment zu einer Zone. | |
| float | calcDirectional (Tile &tile, LightZone &le) |
| Berechnet die Lichtintensitaet fuer eine Tile. Weil das Directional Light unabhaengig von der Cameraposition ist, muss die Lichtintensitaet pro Tile nur einmal berechnet werden. Das passiert sinnvoller weise nachden die Richtung der Lichtquelle gesetzt wurde, und bevor die Map zum ersten mal transformiert, bzw. gerendert wird. | |
| float | calcLPs (std::vector< LightPoint * > &lightPoints, float x, float y, float z, float pointMax) |
| Berechnet zu einem Pixel die Lightpoint-Intensity. | |
| BYTE | biInterpolate (int q12, int q22, int q11, int q21, int px, int py) |
| Bilineare interpolation. | |
Private Attribute | |
| bool | m_AmbientON |
| bool | m_DirectionalON |
| bool | m_LightMapON |
Statische private Attribute | |
| static LightManager * | _instance = 0 |
| LightManager::LightManager | ( | ) | [protected] |
Konstruktor, Singleton.
| LightManager::~LightManager | ( | ) | [virtual] |
Destruktor.
| LightManager * LightManager::getInstance | ( | ) | [static] |
Liefert die Singleton-Instanz.
| void LightManager::addEnvironment | ( | int | zone, | |
| float | ambient, | |||
| float | directionalMax, | |||
| float | pointMax | |||
| ) |
Fuegt ein LightEnvironment hinzu.
| zone | die zone fuer die diese Parameter gelten | |
| ambient | Wert fuer das ambiente Licht (= const) | |
| directionalMax | Maximalwert fuer direktes Licht | |
| pointMax | Maximalwert fuer Punktlicht |
| void LightManager::setDirectionalLight | ( | int | zone, | |
| float | dirX, | |||
| float | dirY, | |||
| float | dirZ | |||
| ) |
| void LightManager::addPointLight | ( | int | zone, | |
| float | x, | |||
| float | y, | |||
| float | z | |||
| ) |
Fuegt ein PointLight hinzu.
| zone | Zonen-Nr, bzw. Zonen-ID | |
| x | X-Koordinate fuer das Punktlicht | |
| y | Y-Koordinate fuer das Punktlicht | |
| z | Z-Koordinate fuer das Punktlicht |
Berechnet die Lichtintensitaet fuer eine Tile. Weil das Directional Light unabhaengig von der Cameraposition ist, muss die Lichtintensitaet pro Tile nur einmal berechnet werden. Das passiert sinnvoller weise nachden die Richtung der Lichtquelle gesetzt wurde, und bevor die Map zum ersten mal transformiert, bzw. gerendert wird.
| tile | die Tile welche das Licht reflektiert | |
| le | LightEnvironment |
| void LightManager::calcLightMapGrid | ( | Tile & | tile | ) |
| void LightManager::calcLightMap | ( | Tile & | tile | ) |
Berechnet die Lichtintensitaet fuer eine Tile. Weil das Directional Light unabhaengig von der Cameraposition ist, muss die Lichtintensitaet pro Tile nur einmal berechnet werden. Das passiert sinnvoller weise nachden die Richtung der Lichtquelle gesetzt wurde, und bevor die Map zum ersten mal transformiert, bzw. gerendert wird.
| tile | die Tile welche das Licht reflektiert |
| void LightManager::toggleAmbientLight | ( | ) |
Schaltet das Ambient Light ein oder aus.
| void LightManager::toggleDirectionalLight | ( | ) |
Schaltet das Directional Light ein oder aus.
| void LightManager::toggleLightMap | ( | ) |
Schaltet das Directional Light ein oder aus.
| void LightManager::stepGamma | ( | bool | up | ) |
Korrigiert den Gammawert.
| up | true, false |
| bool LightManager::isAmbientON | ( | ) |
Info ob AmbientLight ON oder OFF.
| bool LightManager::isDirectionalON | ( | ) |
Info ob DirectionalLight ON oder OFF.
| bool LightManager::isLightMapON | ( | ) |
Info ob LightMaps ON oder OFF.
| void LightManager::calcGamma | ( | float | gamma | ) |
Berechnet die Gamma-Rampe.
| gamma |
| void LightManager::load | ( | DataInputStream & | dataIn | ) |
| void LightManager::save | ( | DataOutputStream | dataOut | ) |
Serialisiert das Light-Objekt in den Outputstream.
| dataOut | DataOutputStream |
| IOException |
| void LightManager::dump | ( | ) |
Obligatorische dump-Methode fuer Debugzwecke.
| LightZone * LightManager::getLightZone | ( | int | zone | ) | [private] |
Getter fuer das LightEnvironment zu einer Zone.
| zone | Zonen-Nr, bzw Zonen-ID |
Berechnet die Lichtintensitaet fuer eine Tile. Weil das Directional Light unabhaengig von der Cameraposition ist, muss die Lichtintensitaet pro Tile nur einmal berechnet werden. Das passiert sinnvoller weise nachden die Richtung der Lichtquelle gesetzt wurde, und bevor die Map zum ersten mal transformiert, bzw. gerendert wird.
| tile | die Tile welche das Licht reflektiert | |
| le | LightEnvironment |
| float LightManager::calcLPs | ( | std::vector< LightPoint * > & | lightPoints, | |
| float | x, | |||
| float | y, | |||
| float | z, | |||
| float | pointMax | |||
| ) | [private] |
Berechnet zu einem Pixel die Lightpoint-Intensity.
| lightPoints | Vector mit allen Punktlichtern | |
| x | ||
| y | ||
| z | ||
| pointMax |
| BYTE LightManager::biInterpolate | ( | int | q12, | |
| int | q22, | |||
| int | q11, | |||
| int | q21, | |||
| int | x, | |||
| int | y | |||
| ) | [private] |
Bilineare interpolation.
| q12 | ||
| q22 | ||
| q11 | ||
| q21 | ||
| q21 | ||
| x | ||
| y |
LightManager * LightManager::_instance = 0 [static, private] |
bool LightManager::m_AmbientON [private] |
bool LightManager::m_DirectionalON [private] |
bool LightManager::m_LightMapON [private] |
| std::vector<LightZone*> LightManager::lightZoneList |
| std::vector<LightMap*> LightManager::lightMaps |
| float LightManager::m_gamma |
| int LightManager::m_gammaR[256] |
| int LightManager::m_gammaG[256] |
| int LightManager::m_gammaB[256] |
1.5.5