# Partikel Klassenreferenz

Partikel werden fuer die Darstellung von Feuer, Rauch, Funken, Regen usw. verwendet. Typ. wird ein Partikel durch ein 2D-Objekt repraesentiert, dem eine semitransparente Bitmap (hier Sprite genannt) fuer die Darstellung zugeordnet ist. Partikel koennen sich bewegen oder auch stationaer zein (Blinklichter). Sie haben eine Emitter, einen Lebenszyklus und noch ein paar weitere Attribute. Um 'realistische' Bewegungsablaeufe zu simulieren, wird stark mit Zufallswerten gearbeitet. Mehr ...

`#include <Partikel.h>`

Klassendiagramm für Partikel:

Aufstellung aller Elemente

## Öffentliche Typen
enum | ACTION { RESPAWN_AT_EMITTER = 0, NO_RESPAWN = 1, RESPAWN_REFLECTON = 2 }
enum | LIFECYCLE { IS_OFF = 0, IS_ON = 1, SWITCH_OFF = 2, SWITCH_ON = 3, IS_DEAD = 4 }
## Öffentliche Methoden
| Partikel (int zone, int action)
| Konstruktor.
virtual | ~Partikel ()
| Destruktor.
void | setMotion (Vec &startpos, Vec &velocity, Vec &force)
| Setter fuer die Bewegungsparameter.
void | setMotion (Vec &startpos, Vec &randomMin, Vec &randomMax, float speed, Vec &force)
| Setter fuer die Bewegungsparameter.
void | setONtime (int ontime)
| Setter fuer die Aktive Zeit.
void | setOFFtime (int offtime)
| Setter fuer die Passive Zeit.
float | getONtime ()
| Getter fuer die AKTIVE Zeit.
void | setFading (bool fading)
| Richtungsvektor fuer die Bewegung.
void | setROLLtime (int rolltime)
| Richtungsvektor fuer die Bewegung.
void | animate (void)
| Animiert dieses Partikel.
bool | isON (void)
| Liefert ON/OFF Status des Partikels.
void | addSprite (Sprite *sprite)
| Fuegt ein Sprite an das Partikel an.
void | querySprite (void)
| Richtungsvektor fuer die Bewegung.
## Öffentliche Attribute
bool | m_isScale
bool | m_isFading
Sprite * | m_sprite
## Private Methoden
void | calcVelocity (void)
| Berechnet die Bewegung.
int | refreshStatus (void)
| Liefert der Refreshstatus.
## Private Attribute
int | m_zone
Vec | m_emitterPos
Vec | m_velocity
Vec | m_randomMin
Vec | m_randomMax
Vec | m_force
float | m_frames
bool | m_useSpeed
float | m_speed
unsigned long | m_ONtime
unsigned long | m_ONstart
unsigned long | m_OFFtime
unsigned long | m_OFFstart
unsigned long | m_ROLLtime
unsigned long | m_ROLLstart
int | m_status
int | m_action
int | m_spriteCount
Sprite * | m_spriteOrg [50]
int | m_currSpriteID

## Ausführliche Beschreibung

Partikel werden fuer die Darstellung von Feuer, Rauch, Funken, Regen usw. verwendet. Typ. wird ein Partikel durch ein 2D-Objekt repraesentiert, dem eine semitransparente Bitmap (hier Sprite genannt) fuer die Darstellung zugeordnet ist. Partikel koennen sich bewegen oder auch stationaer zein (Blinklichter). Sie haben eine Emitter, einen Lebenszyklus und noch ein paar weitere Attribute. Um 'realistische' Bewegungsablaeufe zu simulieren, wird stark mit Zufallswerten gearbeitet.

Bewegung:

- Keine Bewegung: Permanent AN, Blinkend=f(zeitintervall)
- Lineare Bewegung: Ueber die Zeit, oder ueber die Distanz zum Emitter Bei Erreichen des Ende: Dead(Ausblenden), Respawn am Emitter, Respawn am letzter Position mit Richtungsumkehr
- Parabel (z.B. Granatenwurf): Ueber die Zeit, ueber die Strecke)

Bei linearer Bewegung:

- Bewegung innerhalb einer BBox (ggf, mit Reflexion)
- Bewegung innerhalb eines Zylinders (ggf, mit Reflexion)
- Bewegung innerhalb einer Kugel (ggf, mit Reflexion)

- Bewegung auf einer BBox (Anwendungsfall??)
- Bewegung auf einem Zylinders (Beamer von Startrek)
- Bewegung auf einer Kugel (Kreis)

## Dokumentation der Aufzählungstypen

enum Partikel::ACTION

Aufzählungswerte:

  RESPAWN_AT_EMITTER |
  NO_RESPAWN |
  RESPAWN_REFLECTON |

enum Partikel::LIFECYCLE

Aufzählungswerte:

  IS_OFF |
  IS_ON |
  SWITCH_OFF |
  SWITCH_ON |
  IS_DEAD |

## Beschreibung der Konstruktoren und Destruktoren

Partikel::Partikel | ( | int | zone,
|  | int | action |
| ) |  |  |

Konstruktor.

Parameter:

  | zone | zoneNr, bzw zoneID
  | action | RESPAWN_AT_EMITTER, NO_RESPAWN, RESPAWN_REFLECTON ...

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

Destruktor.

## Dokumentation der Elementfunktionen

void Partikel::setMotion | ( | Vec & | startpos,
|  | Vec & | velocity,
|  | Vec & | force |
| ) |  |  |

Setter fuer die Bewegungsparameter.

Parameter:

  | startpos | Startposition
  | velocity | Startgeschwindigkeit
  | force | Kraft (z.B. Gravitationskraft)

void Partikel::setMotion | ( | Vec & | startpos,
|  | Vec & | randomMin,
|  | Vec & | randomMax,
|  | float | speed,
|  | Vec & | force |
| ) |  |  |

Setter fuer die Bewegungsparameter.

Parameter:

  | startpos | Startposition
  | randomMin | Startposition
  | randomMax | Startgeschwindigkeit
  | speed | Startgeschwindigkeit
  | force | Kraft (z.B. Gravitationskraft)

void Partikel::setONtime | ( | int | ontime | ) |

Setter fuer die Aktive Zeit.

Parameter:

  | ontime | zeit im millisec.

void Partikel::setOFFtime | ( | int | offtime | ) |

Setter fuer die Passive Zeit.

Parameter:

  | offtime | zeit im millisec.

float Partikel::getONtime | ( |  | ) |

Getter fuer die AKTIVE Zeit.

Rückgabe:
  zeit in millisec.

void Partikel::setFading | ( | bool | fading | ) |

Richtungsvektor fuer die Bewegung.

Parameter:

  | fading | Richtungsvektor

void Partikel::setROLLtime | ( | int | rolltime | ) |

Richtungsvektor fuer die Bewegung.

Parameter:

  | rolltime | Richtungsvektor

void Partikel::animate | ( | void |  | ) |

Animiert dieses Partikel.

bool Partikel::isON | ( | void |  | ) |

Liefert ON/OFF Status des Partikels.

Rückgabe:
  true, false

void Partikel::addSprite | ( | Sprite * | sprite | ) |

Fuegt ein Sprite an das Partikel an.

Parameter:

  | sprite | Richtungsvektor

void Partikel::querySprite | ( | void |  | ) |

Richtungsvektor fuer die Bewegung.

void Partikel::calcVelocity | ( | void |  | ) | `[private]`

Berechnet die Bewegung.

int Partikel::refreshStatus | ( | void |  | ) | `[private]`

Liefert der Refreshstatus.

Rückgabe:
  status

## Dokumentation der Datenelemente

bool Partikel::m_isScale

bool Partikel::m_isFading

Sprite* Partikel::m_sprite

int Partikel::m_zone`[private]`

Vec Partikel::m_emitterPos`[private]`

Vec Partikel::m_velocity`[private]`

Vec Partikel::m_randomMin`[private]`

Vec Partikel::m_randomMax`[private]`

Vec Partikel::m_force`[private]`

float Partikel::m_frames`[private]`

bool Partikel::m_useSpeed`[private]`

float Partikel::m_speed`[private]`

unsigned long Partikel::m_ONtime`[private]`

unsigned long Partikel::m_ONstart`[private]`

unsigned long Partikel::m_OFFtime`[private]`

unsigned long Partikel::m_OFFstart`[private]`

unsigned long Partikel::m_ROLLtime`[private]`

unsigned long Partikel::m_ROLLstart`[private]`

int Partikel::m_status`[private]`

int Partikel::m_action`[private]`

int Partikel::m_spriteCount`[private]`

Sprite* Partikel::m_spriteOrg[50]`[private]`

int Partikel::m_currSpriteID`[private]`

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

- D:/Project/engine3d/cplusplus/src/partikel/Partikel.h
- D:/Project/engine3d/cplusplus/src/partikel/Partikel.cpp