aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/particle/je_particle_pool.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-23 22:09:22 +0800
committerchai <chaifix@163.com>2018-10-23 22:09:22 +0800
commitd74e03063095d43c654fa52c3868f7ef8fce69f1 (patch)
treeee91251c170edafacca3d3242e5b44444fb70e79 /src/libjin/Graphics/particle/je_particle_pool.h
parent6551adeca70d4299a99d45245d4e13dbfdfa87e5 (diff)
*粒子系统
Diffstat (limited to 'src/libjin/Graphics/particle/je_particle_pool.h')
-rw-r--r--src/libjin/Graphics/particle/je_particle_pool.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/libjin/Graphics/particle/je_particle_pool.h b/src/libjin/Graphics/particle/je_particle_pool.h
new file mode 100644
index 0000000..f1f6214
--- /dev/null
+++ b/src/libjin/Graphics/particle/je_particle_pool.h
@@ -0,0 +1,53 @@
+#ifndef __JE_PARTICLE_BATCH_H
+#define __JE_PARTICLE_BATCH_H
+
+#include <list>
+
+#include "je_particle.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+ ///
+ /// 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;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif \ No newline at end of file