aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/particles/je_particle_system.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/particles/je_particle_system.cpp')
-rw-r--r--src/libjin/graphics/particles/je_particle_system.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/libjin/graphics/particles/je_particle_system.cpp b/src/libjin/graphics/particles/je_particle_system.cpp
index d16b918..2c2f9bb 100644
--- a/src/libjin/graphics/particles/je_particle_system.cpp
+++ b/src/libjin/graphics/particles/je_particle_system.cpp
@@ -1,3 +1,5 @@
+#include <stdarg.h>
+
#include "je_particle_system.h"
namespace JinEngine
@@ -7,6 +9,12 @@ namespace JinEngine
namespace Particles
{
+ ParticleSystem::ParticleSystem(uint maxCount)
+ : mEmitter(*this)
+ , mParticlePool(maxCount, sizeof(Particle))
+ {
+ }
+
ParticleSystem::ParticleSystem(const ParticleSystemDef& def)
: mDef(def)
, mEmitter(*this)
@@ -164,11 +172,23 @@ namespace JinEngine
mDef.particleDef.spritesDef.mode = mode;
}
- void ParticleSystem::addParticleSprites(const Sprite* sprite)
+ void ParticleSystem::addParticleSprite(const Sprite* sprite)
{
mDef.particleDef.spritesDef.sprites.push_back(sprite);
}
+ void ParticleSystem::addParticleSprites(uint count, ...)
+ {
+ va_list args;
+ va_start(args, count);
+ while (count--)
+ {
+ Sprite* spr = va_arg(args, Sprite*);
+ addParticleSprite(spr);
+ }
+ va_end(args);
+ }
+
void ParticleSystem::removeParticleSprite(uint i)
{
mDef.particleDef.spritesDef.sprites.erase(mDef.particleDef.spritesDef.sprites.begin() + i);
@@ -213,6 +233,23 @@ namespace JinEngine
mDef.particleDef.colorDef.overTime.value.removeColor(i);
}
+ void ParticleSystem::setParticleTransparency(float transparency)
+ {
+ mDef.particleDef.transparencyDef.overTime.enable = false;
+ mDef.particleDef.transparencyDef.transparency = transparency;
+ }
+
+ void ParticleSystem::addParticleTransparencyPoint(float transparency, float t)
+ {
+ mDef.particleDef.transparencyDef.overTime.enable = true;
+ mDef.particleDef.transparencyDef.overTime.value.addPoint(t, transparency);
+ }
+
+ void ParticleSystem::removeParticleTransparencyPoint(uint i)
+ {
+ mDef.particleDef.transparencyDef.overTime.value.removePoint(i);
+ }
+
}
}
} \ No newline at end of file