summaryrefslogtreecommitdiff
path: root/src/particle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/particle.cpp')
-rw-r--r--src/particle.cpp25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/particle.cpp b/src/particle.cpp
index 0cd680e8..977e11de 100644
--- a/src/particle.cpp
+++ b/src/particle.cpp
@@ -177,7 +177,7 @@ bool Particle::update()
{
for (auto &childEmitter : mChildEmitters)
{
- Particles newParticles = childEmitter->createParticles(mLifetimePast);
+ Particles newParticles = childEmitter.createParticles(mLifetimePast);
for (auto &newParticle : newParticles)
{
newParticle->moveBy(mPos);
@@ -324,34 +324,32 @@ Particle *Particle::addEffect(const std::string &particleEffectFile,
{
if (emitterNode.name() == "emitter")
{
- ParticleEmitter *newEmitter;
- newEmitter = new ParticleEmitter(emitterNode, newParticle, mMap,
- rotation, dyePalettes);
- newParticle->addEmitter(newEmitter);
+ newParticle->addEmitter(ParticleEmitter(emitterNode, newParticle, mMap,
+ rotation, dyePalettes));
}
else if (emitterNode.name() == "deatheffect")
{
std::string deathEffect { emitterNode.textContent() };
- char deathEffectConditions = 0x00;
+ unsigned char deathEffectConditions = 0x00;
if (emitterNode.getBoolProperty("on-floor", true))
{
- deathEffectConditions += Particle::DEAD_FLOOR;
+ deathEffectConditions |= Particle::DEAD_FLOOR;
}
if (emitterNode.getBoolProperty("on-sky", true))
{
- deathEffectConditions += Particle::DEAD_SKY;
+ deathEffectConditions |= Particle::DEAD_SKY;
}
if (emitterNode.getBoolProperty("on-other", false))
{
- deathEffectConditions += Particle::DEAD_OTHER;
+ deathEffectConditions |= Particle::DEAD_OTHER;
}
if (emitterNode.getBoolProperty("on-impact", true))
{
- deathEffectConditions += Particle::DEAD_IMPACT;
+ deathEffectConditions |= Particle::DEAD_IMPACT;
}
if (emitterNode.getBoolProperty("on-timeout", true))
{
- deathEffectConditions += Particle::DEAD_TIMEOUT;
+ deathEffectConditions |= Particle::DEAD_TIMEOUT;
}
newParticle->setDeathEffect(deathEffect, deathEffectConditions);
}
@@ -408,7 +406,7 @@ void Particle::adjustEmitterSize(int w, int h)
return;
for (auto &childEmitter : mChildEmitters)
- childEmitter->adjustSize(w, h);
+ childEmitter.adjustSize(w, h);
}
float Particle::getCurrentAlpha() const
@@ -426,9 +424,6 @@ float Particle::getCurrentAlpha() const
void Particle::clear()
{
- delete_all(mChildEmitters);
- mChildEmitters.clear();
-
delete_all(mChildParticles);
mChildParticles.clear();
}