94
Particle *GameRenderer::_GetNewestParticle(ParticleType PType) {
95
/* Return newest particle of a given type */
96
Particle *pNewest = NULL;
97
for(int i=0;i<m_Particles.size();i++) {
98
if(m_Particles[i]->Type == PType &&
99
(pNewest==NULL || pNewest->fSpawnTime < m_Particles[i]->fSpawnTime))
100
pNewest = m_Particles[i];
87
105
void GameRenderer::_UpdateParticles(float fTimeStep) {
88
106
MotoGame *pGame = getGameObject();
110
128
else if(pGame->getEntities()[i]->ParticleType == "Fire") {
111
129
for(int k=0;k<10;k++) {
112
130
/* Generate fire */
113
spawnParticle(PT_FIRE,pGame->getEntities()[i]->Pos,Vector2f(randomNum(-1,1),randomNum(0.1,0.3)),0);
131
Particle *pFireParticle = spawnParticle(PT_FIRE,pGame->getEntities()[i]->Pos,Vector2f(randomNum(-1,1),randomNum(0.1,0.3)),0);
132
pFireParticle->bFront = false;
114
134
pGame->getEntities()[i]->fNextParticleTime = pGame->getTime() + randomNum(0.05,0.1f);
222
void GameRenderer::clearAllParticles(void) {
223
for(int i=0;i<m_Particles.size();i++) {
224
delete m_Particles[i];
202
229
void GameRenderer::_RenderParticle(Vector2f P,Texture *pTexture,float fSize,float fAngle,Color c) {
203
230
/* Render single particle */
204
231
if(pTexture == NULL) return;
237
264
void GameRenderer::_RenderParticles(bool bFront) {
238
267
/* Render all particles */
239
268
for(int i=0;i<m_Particles.size();i++) {
240
269
if(m_Particles[i]->bFront == bFront) {
241
270
switch(m_Particles[i]->Type) {
243
_RenderParticle(m_Particles[i]->Pos,m_pSmoke1,m_Particles[i]->fSmokeSize,
244
m_Particles[i]->fAng,m_Particles[i]->SmokeColor);
272
pType = (EffectSprite*) getParent()->m_theme.getSprite(SPRITE_TYPE_EFFECT, "Smoke1");
274
_RenderParticle(m_Particles[i]->Pos,pType->getTexture(),m_Particles[i]->fSmokeSize,
275
m_Particles[i]->fAng,m_Particles[i]->SmokeColor);
247
_RenderParticle(m_Particles[i]->Pos,m_pSmoke2,m_Particles[i]->fSmokeSize,
248
m_Particles[i]->fAng,m_Particles[i]->SmokeColor);
279
pType = (EffectSprite*) getParent()->m_theme.getSprite(SPRITE_TYPE_EFFECT, "Smoke2");
281
_RenderParticle(m_Particles[i]->Pos,pType->getTexture(),m_Particles[i]->fSmokeSize,
282
m_Particles[i]->fAng,m_Particles[i]->SmokeColor);
251
_RenderParticle(m_Particles[i]->Pos,m_pFire1,m_Particles[i]->fFireSize,
252
m_Particles[i]->fAng,m_Particles[i]->FireColor);
286
pType = (EffectSprite*) getParent()->m_theme.getSprite(SPRITE_TYPE_EFFECT, "Fire1");
288
_RenderParticle(m_Particles[i]->Pos,pType->getTexture(),m_Particles[i]->fFireSize,
289
m_Particles[i]->fAng,m_Particles[i]->FireColor);
255
_RenderParticle(m_Particles[i]->Pos,m_pDirt1,m_Particles[i]->fDebrisSize,
256
m_Particles[i]->fAng,m_Particles[i]->DebrisTint);
293
pType = (EffectSprite*) getParent()->m_theme.getSprite(SPRITE_TYPE_EFFECT, "Debris1");
295
_RenderParticle(m_Particles[i]->Pos,pType->getTexture(),m_Particles[i]->fDebrisSize,
296
m_Particles[i]->fAng,m_Particles[i]->DebrisTint);
301
AnimationSprite *pStarAnim = (AnimationSprite *)getParent()->m_theme.getSprite(SPRITE_TYPE_ANIMATION,"Star");
302
if(pStarAnim != NULL) {
303
_RenderParticle(m_Particles[i]->Pos,pStarAnim->getTexture(),pStarAnim->getWidth(),
304
m_Particles[i]->fAng,MAKE_COLOR(255,255,255,255));