aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/ParticleEmitter.h
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-24 10:52:21 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-24 10:52:21 +0200
commit39054829fa69bcfa2b468015dc3852a2f8deac9f (patch)
treee7726d90fb3c23a15919360dd10bdf709e7e087a /src/crepe/api/ParticleEmitter.h
parentdd9940720cde6975f79d65e08075687c47f0aec6 (diff)
parent5447ddd896eb49ea9fd9f9191a277fd1d5730aa3 (diff)
merge master into loek/config
Diffstat (limited to 'src/crepe/api/ParticleEmitter.h')
-rw-r--r--src/crepe/api/ParticleEmitter.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/crepe/api/ParticleEmitter.h b/src/crepe/api/ParticleEmitter.h
new file mode 100644
index 0000000..2e2e95b
--- /dev/null
+++ b/src/crepe/api/ParticleEmitter.h
@@ -0,0 +1,42 @@
+#pragma once
+
+#include <cstdint>
+#include <vector>
+
+#include "Component.h"
+#include "Particle.h"
+
+namespace crepe {
+
+class ParticleEmitter : public Component {
+public:
+ ParticleEmitter(uint32_t game_object_id, uint32_t max_particles,
+ uint32_t emission_rate, uint32_t speed,
+ uint32_t speed_offset, uint32_t angle, uint32_t angleOffset,
+ float begin_lifespan, float end_lifespan);
+ ~ParticleEmitter();
+
+ //! position of the emitter
+ Position position;
+ //! maximum number of particles
+ uint32_t max_particles;
+ //! rate of particle emission
+ uint32_t emission_rate;
+ //! base speed of the particles
+ uint32_t speed;
+ //! offset for random speed variation
+ uint32_t speed_offset;
+ //! min angle of particle emission
+ uint32_t min_angle;
+ //! max angle of particle emission
+ uint32_t max_angle;
+ //! begin Lifespan of particle (only visual)
+ float begin_lifespan;
+ //! begin Lifespan of particle
+ float end_lifespan;
+
+ //! collection of particles
+ std::vector<Particle> particles;
+};
+
+} // namespace crepe