From 1d54138b94a384917d47abd8109c586b1b7ac323 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 25 Nov 2018 13:08:56 +0800 Subject: =?UTF-8?q?*=E7=B2=92=E5=AD=90=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../graphics/particles/je_particle_system.cpp | 39 +++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'src/libjin/graphics/particles/je_particle_system.cpp') 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 + #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 -- cgit v1.1-26-g67d0