diff options
Diffstat (limited to 'src/libjin/graphics/particles')
-rw-r--r-- | src/libjin/graphics/particles/je_particle.cpp | 8 | ||||
-rw-r--r-- | src/libjin/graphics/particles/je_particle.h | 4 | ||||
-rw-r--r-- | src/libjin/graphics/particles/je_particle_system.cpp | 11 | ||||
-rw-r--r-- | src/libjin/graphics/particles/je_particle_system.h | 21 |
4 files changed, 31 insertions, 13 deletions
diff --git a/src/libjin/graphics/particles/je_particle.cpp b/src/libjin/graphics/particles/je_particle.cpp index 00e593f..fc3dc54 100644 --- a/src/libjin/graphics/particles/je_particle.cpp +++ b/src/libjin/graphics/particles/je_particle.cpp @@ -1,3 +1,4 @@ +#include "../../utils/je_log.h" #include "../../common/je_array.hpp" #include "../../math/je_math.h" #include "../../math/je_random.h" @@ -129,9 +130,9 @@ namespace JinEngine color = def->colorDef.overTime.value.getColor(t); // transparency if (def->transparencyDef.overTime.enable) - color.a *= def->transparencyDef.overTime.value.getValue(t); + color.a = 0xff * def->transparencyDef.overTime.value.getValue(t); else - color.a *= def->transparencyDef.transparency.value; + color.a = 0xff * def->transparencyDef.transparency.value; if ((updateFlags & UPDATE_SCALE) != 0) { // Lerp scale. @@ -156,8 +157,7 @@ namespace JinEngine int n = def->spritesDef.sprites.size(); if (def->spritesDef.mode == SpriteMode::ANIMATED) spriteIndex = lerp<int>(0, n - 1, t); - //else - // spriteIndex = rng.rand(0, n - 1); + //jin_log_info("sprite index %d", spriteIndex); } life += dt; alive = life < lifeTime; diff --git a/src/libjin/graphics/particles/je_particle.h b/src/libjin/graphics/particles/je_particle.h index bef3e6d..2b5966b 100644 --- a/src/libjin/graphics/particles/je_particle.h +++ b/src/libjin/graphics/particles/je_particle.h @@ -155,7 +155,7 @@ namespace JinEngine /// A single particle contains various properties of particle, such as position, accelaration, color /// and other attributes changed over time. /// - class Particle : public IRenderable, public Game::GameObject + class Particle : public Renderable, public Game::GameObject { public: enum ParticleUpdateMask @@ -189,7 +189,7 @@ namespace JinEngine /// void render(); - ////////////////////////////////////////////////////////////////////////////////////////////////// + // Methods end. ParticleDef* def; diff --git a/src/libjin/graphics/particles/je_particle_system.cpp b/src/libjin/graphics/particles/je_particle_system.cpp index 2c2f9bb..a6e9460 100644 --- a/src/libjin/graphics/particles/je_particle_system.cpp +++ b/src/libjin/graphics/particles/je_particle_system.cpp @@ -1,5 +1,7 @@ #include <stdarg.h> +#include "../../utils/je_log.h" + #include "je_particle_system.h" namespace JinEngine @@ -60,6 +62,7 @@ namespace JinEngine { Particle* p = new (mParticlePool.GetNextWithoutInitializing()) Particle(); mAliveParticles.push_back(p); + jin_log_info("particle count %d", mAliveParticles.size()); return p; } @@ -216,16 +219,16 @@ namespace JinEngine mDef.particleDef.scaleDef.overTime.value.removePoint(i); } - void ParticleSystem::setParticleColor(Color color) + void ParticleSystem::setParticleColor(Color tint) { mDef.particleDef.colorDef.overTime.enable = false; - mDef.particleDef.colorDef.color = color; + mDef.particleDef.colorDef.color = tint; } - void ParticleSystem::addParticleColorPoint(Color color, float t) + void ParticleSystem::addParticleColorPoint(Color tint, float t) { mDef.particleDef.colorDef.overTime.enable = true; - mDef.particleDef.colorDef.overTime.value.addColor(color, t); + mDef.particleDef.colorDef.overTime.value.addColor(tint, t); } void ParticleSystem::removeParticleColorPoint(uint i) diff --git a/src/libjin/graphics/particles/je_particle_system.h b/src/libjin/graphics/particles/je_particle_system.h index 20f39dc..b3640d4 100644 --- a/src/libjin/graphics/particles/je_particle_system.h +++ b/src/libjin/graphics/particles/je_particle_system.h @@ -33,7 +33,7 @@ namespace JinEngine /// /// Particle emitter, handle all particles it emitts. /// - class ParticleSystem : public IRenderable, public Game::GameObject + class ParticleSystem : public Renderable, public Game::GameObject { public: /// @@ -49,11 +49,26 @@ namespace JinEngine ParticleSystem(uint maxCount = 64); /// + /// + /// + ParticleSystem(const std::string & config); + + /// /// Particle system destructor. /// ~ParticleSystem(); /// + /// + /// + void setDefinition(const ParticleSystemDef& def); + + /// + /// Load definition from config. + /// + void setDefinition(const std::string& config); + + /// /// Update particle system and all alive particles. /// void update(float dt); @@ -124,8 +139,8 @@ namespace JinEngine void addParticleScalePoint(float scale, float t); void removeParticleScalePoint(uint i); - void setParticleColor(Color color); - void addParticleColorPoint(Color color, float t); + void setParticleColor(Color tint); + void addParticleColorPoint(Color tint, float t); void removeParticleColorPoint(uint i); void setParticleTransparency(float transparency); |