aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/particles
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/particles')
-rw-r--r--src/libjin/graphics/particles/je_particle.cpp8
-rw-r--r--src/libjin/graphics/particles/je_particle.h4
-rw-r--r--src/libjin/graphics/particles/je_particle_system.cpp11
-rw-r--r--src/libjin/graphics/particles/je_particle_system.h21
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);