This commit is contained in:
parent
e00a8747fc
commit
44e4594a1f
1 changed files with 30 additions and 9 deletions
|
@ -71,6 +71,8 @@ CBubicleEmitter *CBubicleFactory::s_emitters;
|
||||||
CBubicle *CBubicleFactory::s_bubicles;
|
CBubicle *CBubicleFactory::s_bubicles;
|
||||||
SpriteBank *CBubicleFactory::s_sprites;
|
SpriteBank *CBubicleFactory::s_sprites;
|
||||||
|
|
||||||
|
int s_numLiveBubicleEmitters=0;
|
||||||
|
int s_numLiveBubicles=0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +124,11 @@ void CBubicleEmitter::think(int _frames)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_data.m_life!=-1&&m_frameCount>m_data.m_life)
|
if(m_data.m_life!=-1&&m_frameCount>m_data.m_life)
|
||||||
|
{
|
||||||
m_active=false;
|
m_active=false;
|
||||||
|
s_numLiveBubicleEmitters--;
|
||||||
|
ASSERT(s_numLiveBubicleEmitters>=0); // Woah, something bad has happened!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -306,7 +312,11 @@ void CBubicle::think(int _frames)
|
||||||
m_frameCount+=_frames;
|
m_frameCount+=_frames;
|
||||||
|
|
||||||
if(m_frameCount>m_data.m_life)
|
if(m_frameCount>m_data.m_life)
|
||||||
|
{
|
||||||
m_active=false;
|
m_active=false;
|
||||||
|
s_numLiveBubicles--;
|
||||||
|
ASSERT(s_numLiveBubicles>=0); // Woah, something bad has happened!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -398,22 +408,32 @@ void CBubicleFactory::think(int _frames)
|
||||||
ASSERT(s_initialised);
|
ASSERT(s_initialised);
|
||||||
|
|
||||||
int frames;
|
int frames;
|
||||||
int i;
|
int i,count;
|
||||||
CBubicleEmitter *emt;
|
CBubicleEmitter *emt;
|
||||||
CBubicle *bub;
|
CBubicle *bub;
|
||||||
|
|
||||||
emt=s_emitters;
|
emt=s_emitters;
|
||||||
for(i=0;i<NUM_EMITTERS;i++,emt++)
|
count=s_numLiveBubicleEmitters;
|
||||||
|
for(i=0;i<count;i++)
|
||||||
{
|
{
|
||||||
if(emt->isActive())
|
while(!emt->isActive())
|
||||||
emt->think(_frames);
|
{
|
||||||
|
emt++;
|
||||||
|
}
|
||||||
|
emt->think(_frames);
|
||||||
|
emt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bub=s_bubicles;
|
bub=s_bubicles;
|
||||||
for(i=0;i<NUM_BUBICLES;i++,bub++)
|
count=s_numLiveBubicles;
|
||||||
|
for(i=0;i<count;i++)
|
||||||
{
|
{
|
||||||
if(bub->isActive())
|
while(!bub->isActive())
|
||||||
bub->think(_frames);
|
{
|
||||||
|
bub++;
|
||||||
|
}
|
||||||
|
bub->think(_frames);
|
||||||
|
bub++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -468,6 +488,7 @@ CBubicleEmitter *CBubicleFactory::spawnEmitter(BubicleEmitterData *_init)
|
||||||
if(!emt->isActive())
|
if(!emt->isActive())
|
||||||
{
|
{
|
||||||
emt->init(_init);
|
emt->init(_init);
|
||||||
|
s_numLiveBubicleEmitters++;
|
||||||
return emt;
|
return emt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -523,7 +544,7 @@ CBubicle *CBubicleFactory::spawnParticle(BubicleEmitterData *_init)
|
||||||
newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_b);
|
newBubData.m_colour.m_b=_init->m_bubicleBase.m_colour.m_r+getRndRange(_init->m_bubicleRange.m_colour.m_b);
|
||||||
|
|
||||||
bub->init(&newBubData,x,y);
|
bub->init(&newBubData,x,y);
|
||||||
|
s_numLiveBubicles++;
|
||||||
return bub;
|
return bub;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue