28#ifndef HPL_PARTICLE_EMITTER_H
29#define HPL_PARTICLE_EMITTER_H
31#include "common/array.h"
32#include "common/list.h"
33#include "hpl1/engine/graphics/GraphicsTypes.h"
34#include "hpl1/engine/graphics/Material.h"
35#include "hpl1/engine/math/MathTypes.h"
36#include "hpl1/engine/system/SystemTypes.h"
37#include "common/stablemap.h"
41enum eParticleEmitterType {
42 eParticleEmitterType_2D,
43 eParticleEmitterType_3D,
44 eParticleEmitterType_LastEnum,
51 ePENoiseType_HighFreq,
54 ePENoiseType_LastEnum,
62 int lHighFreqNoiseIdx;
63 ePENoiseType noiseType;
93 float mfLifeSize_MiddleStart;
94 float mfLifeSize_MiddleEnd;
96 float mfLifeColor_MiddleStart;
97 float mfLifeColor_MiddleEnd;
101 float mfBounceAmount;
117 int mlHighFreqPoints;
139 void Update(
float afTimeStep);
141 virtual void Render() = 0;
143 virtual eParticleEmitterType GetType() = 0;
145 tString GetEntityType() {
return "ParticleEmitter"; }
147 virtual bool IsDead() {
return mlNumOfParticles == 0 && mbDying; }
148 virtual void Kill() { mbDying =
true; }
150 void KillInstantly();
152 virtual bool IsDying() {
return mbDying; }
154 void SetDataName(
const tString &asName) { msDataName = asName; }
155 void SetDataSize(
const cVector3f &avSize) { mvDataSize = avSize; }
157 int GetParticleNum() {
return mlNumOfParticles; }
167 unsigned int mlNumOfParticles;
168 unsigned int mlMaxParticles;
182 virtual void UpdateMotion(
float afTimeStep) = 0;
184 virtual void SetParticleDefaults(
cParticle *apParticle) = 0;
218 const tString &GetName() {
return msName; }
222 float GetWarmUpTime()
const {
return mfWarmUpTime; }
223 float GetWarmUpStepsPerSec()
const {
return mfWarmUpStepsPerSec; }
226 cResources *mpResources;
227 cGraphics *mpGraphics;
230 tMaterialVec mvMaterials;
233 float mfWarmUpStepsPerSec;
cParticle * * iterator
Definition: array.h:54
Definition: stablemap.h:43
typename TreeT::BasicIterator iterator
Definition: stablemap.h:48
Definition: Graphics.h:46
Definition: ParticleEmitter.h:72
Definition: ParticleSystem3D.h:45
Definition: Resources.h:160
Definition: Material.h:203
Definition: ParticleEmitter.h:203
iParticleEmitterData(const tString &asName, cResources *apResources, cGraphics *apGraphics)
Definition: ParticleEmitter.h:133
void SwapRemove(unsigned int alIndex)
Definition: list_intern.h:54
Definition: ParticleEmitter.h:58