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.cpp14
-rw-r--r--src/libjin/Graphics/particles/je_particle.h21
-rw-r--r--src/libjin/Graphics/particles/je_particle_pool.cpp0
-rw-r--r--src/libjin/Graphics/particles/je_particle_pool.h36
-rw-r--r--src/libjin/Graphics/particles/je_particle_system.h5
5 files changed, 40 insertions, 36 deletions
diff --git a/src/libjin/Graphics/particles/je_particle.cpp b/src/libjin/Graphics/particles/je_particle.cpp
index e69de29..9179093 100644
--- a/src/libjin/Graphics/particles/je_particle.cpp
+++ b/src/libjin/Graphics/particles/je_particle.cpp
@@ -0,0 +1,14 @@
+#include "je_particle.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+ namespace Particles
+ {
+
+
+
+ }
+ }
+} \ No newline at end of file
diff --git a/src/libjin/Graphics/particles/je_particle.h b/src/libjin/Graphics/particles/je_particle.h
index 3dd480e..73803e8 100644
--- a/src/libjin/Graphics/particles/je_particle.h
+++ b/src/libjin/Graphics/particles/je_particle.h
@@ -2,6 +2,7 @@
#define __JE_PARTICLE_H__
#include "../../math/je_vector2.hpp"
+#include "../je_color.h"
namespace JinEngine
{
@@ -12,6 +13,9 @@ namespace JinEngine
class ParticleEmitter;
+ ///
+ ///
+ ///
struct LifeTimeDef
{
bool enableRandom = false;
@@ -25,11 +29,17 @@ namespace JinEngine
} life;
};
+ ///
+ ///
+ ///
struct LinearAccelaration
{
};
+ ///
+ ///
+ ///
struct SpeedOverTimeDef
{
bool enable = false;
@@ -100,7 +110,16 @@ namespace JinEngine
///
struct Particle
{
- Particle(const ParticleDef& particleDef);
+ ///
+ /// Default constructor.
+ ///
+ Particle();
+
+ ///
+ /// Initialize with given definition.
+ ///
+ void initialize(const ParticleDef& particleDef);
+
///
/// Whole life time.
///
diff --git a/src/libjin/Graphics/particles/je_particle_pool.cpp b/src/libjin/Graphics/particles/je_particle_pool.cpp
deleted file mode 100644
index e69de29..0000000
--- a/src/libjin/Graphics/particles/je_particle_pool.cpp
+++ /dev/null
diff --git a/src/libjin/Graphics/particles/je_particle_pool.h b/src/libjin/Graphics/particles/je_particle_pool.h
index 6bd41e0..46cd73a 100644
--- a/src/libjin/Graphics/particles/je_particle_pool.h
+++ b/src/libjin/Graphics/particles/je_particle_pool.h
@@ -1,7 +1,7 @@
#ifndef __JE_PARTICLE_BATCH_H__
#define __JE_PARTICLE_BATCH_H__
-#include <list>
+#include "../../common/je_pool.hpp"
#include "je_particle.h"
@@ -15,39 +15,7 @@ namespace JinEngine
///
/// Particle pool for reducing memory fragmentation.
///
- class ParticlePool
- {
- public:
-
- ///
- /// Particle pool constructor.
- ///
- /// @param count Max count of particles.
- ///
- ParticlePool(uint count);
-
- ///
- /// Particle pool destructor.
- ///
- ~ParticlePool();
-
- ///
- /// Claim a particle if available.
- ///
- Particle* claim();
-
- ///
- /// Recycle particle if the particle is no more alive.
- ///
- void recycle(Particle* particle);
-
- private:
- ///
- /// All particles include available and inavailable particles.
- ///
- std::list<Particle> particles;
-
- };
+ typedef Pool<Particle> ParticlePool;
} // namespace Particles
} // namespace Graphics
diff --git a/src/libjin/Graphics/particles/je_particle_system.h b/src/libjin/Graphics/particles/je_particle_system.h
index 32123a6..fa050f7 100644
--- a/src/libjin/Graphics/particles/je_particle_system.h
+++ b/src/libjin/Graphics/particles/je_particle_system.h
@@ -63,7 +63,10 @@ namespace JinEngine
///
/// Release particle and make it available in particle pool.
///
- void releaseParticle();
+ void releaseParticle()
+ {
+ Particle*p = mParticlePool.New();
+ }
private:
// Disable default constructor.