Public Types |
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
} |
Public Member Functions |
| 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.
|
Public Attributes |
bool | m_isScale |
bool | m_isFading |
Sprite * | m_sprite |
Private Member Functions |
void | calcVelocity (void) |
| Berechnet die Bewegung.
|
int | refreshStatus (void) |
| Liefert der Refreshstatus.
|
Private Attributes |
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 |
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)