# LightManager Klassenreferenz

`#include <LightManager.h>`

Aufstellung aller Elemente

## Ö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

## Beschreibung der Konstruktoren und Destruktoren

LightManager::LightManager | ( |  | ) | `[protected]`

Konstruktor, Singleton.

LightManager::~LightManager | ( |  | ) | `[virtual]`

Destruktor.

## Dokumentation der Elementfunktionen

LightManager * LightManager::getInstance | ( |  | ) | `[static]`

Liefert die Singleton-Instanz.

Rückgabe:
  Pointer auf die Instanz

void LightManager::addEnvironment | ( | int | zone,
|  | float | ambient,
|  | float | directionalMax,
|  | float | pointMax |
| ) |  |  |

Fuegt ein LightEnvironment hinzu.

Parameter:

  | 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 |
| ) |  |  |

Fuegt DirectionalLight hinzu.

Parameter:

  | zone | zone-Nr, bzw. zone-ID
  | dirX | X-Richtungskomponente fuer das Direktional Light
  | dirY | Y-Richtungskomponente fuer das Direktional Light
  | dirZ | Z-Richtungskomponente fuer das Direktional Light

void LightManager::addPointLight | ( | int | zone,
|  | float | x,
|  | float | y,
|  | float | z |
| ) |  |  |

Fuegt ein PointLight hinzu.

Parameter:

  | zone | Zonen-Nr, bzw. Zonen-ID
  | x | X-Koordinate fuer das Punktlicht
  | y | Y-Koordinate fuer das Punktlicht
  | z | Z-Koordinate fuer das Punktlicht

void LightManager::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.

Parameter:

  | tile | die Tile welche das Licht reflektiert
  | le | LightEnvironment

void LightManager::calcLightMapGrid | ( | Tile & | tile | ) |

Berechnet die Lichtintensitaet an den Stuetzstellen einer Tile. Hier werden das Ambient- Directional- und die PoinLight-Komponenten beruecksichtigt.

Parameter:

  | tile | die Tile welche das Licht reflektiert

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.

Parameter:

  | 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.

Parameter:

  | up | true, false

bool LightManager::isAmbientON | ( |  | ) |

Info ob AmbientLight ON oder OFF.

Rückgabe:
  true->ON, false-->OFF

bool LightManager::isDirectionalON | ( |  | ) |

Info ob DirectionalLight ON oder OFF.

Rückgabe:
  true->ON, false-->OFF

bool LightManager::isLightMapON | ( |  | ) |

Info ob LightMaps ON oder OFF.

Rückgabe:
  true->ON, false-->OFF

void LightManager::calcGamma | ( | float | gamma | ) |

Berechnet die Gamma-Rampe.

Parameter:

  | gamma |

void LightManager::load | ( | DataInputStream & | dataIn | ) |

Liest das Light-Objekt aus dem Inputstream.

Parameter:

  | dataIn | DataInputStream

void LightManager::save | ( | DataOutputStream | dataOut | ) |

Serialisiert das Light-Objekt in den Outputstream.

Parameter:

  | dataOut | DataOutputStream

Ausnahmebehandlung:

  | IOException |

void LightManager::dump | ( |  | ) |

Obligatorische dump-Methode fuer Debugzwecke.

void LightManager::calcLightMapGrid | ( | Tile & | tile,
|  | LightZone & | le |
| ) |  |  | `[private]`

Berechnet die Lichtintensitaet an den Stuetzstellen (Grid) fuer eine Tile.

Parameter:

  | tile | die Tile welche das Licht reflektiert
  | le | LightEnvironment

LightZone * LightManager::getLightZone | ( | int | zone | ) | `[private]`

Getter fuer das LightEnvironment zu einer Zone.

Parameter:

  | zone | Zonen-Nr, bzw Zonen-ID

Rückgabe:
  Pointer auf das LightEnvironment

float LightManager::calcDirectional | ( | Tile & | tile,
|  | LightZone & | le |
| ) |  |  | `[private]`

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.

Parameter:

  | 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.

Parameter:

  | 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.

Parameter:

  | q12 |
  | q22 |
  | q11 |
  | q21 |
  | q21 |
  | x |
  | y |

## Dokumentation der Datenelemente

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]

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:

- D:/Project/engine3d/cplusplus/src/light/LightManager.h
- D:/Project/engine3d/cplusplus/src/light/LightManager.cpp