diff options
Diffstat (limited to 'src/libjin/graphics/particles/je_particle_system.cpp')
-rw-r--r-- | src/libjin/graphics/particles/je_particle_system.cpp | 39 |
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 |