diff options
Diffstat (limited to 'src/crepe/api/ParticleEmitter.h')
-rw-r--r-- | src/crepe/api/ParticleEmitter.h | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/src/crepe/api/ParticleEmitter.h b/src/crepe/api/ParticleEmitter.h index f931e8c..2cda1bb 100644 --- a/src/crepe/api/ParticleEmitter.h +++ b/src/crepe/api/ParticleEmitter.h @@ -11,24 +11,44 @@ class Sprite; namespace crepe { + +/** + * \brief Data holder for particle emission parameters. + * + * The ParticleEmitter class stores configuration data for particle properties, + * defining the characteristics and boundaries of particle emissions. + */ + class ParticleEmitter : public Component { public: - struct ParticleBoundary{ + /** + * \brief Defines the boundary within which particles are constrained. + * + * This structure specifies the boundary's size and offset, as well as the + * behavior of particles upon reaching the boundary limits. + */ + struct Boundary{ //! boundary width (midpoint is emitter location) - double boundary_width = 0.0; + double width = 0.0; //! boundary height (midpoint is emitter location) - double boundary_height = 0.0; + double height = 0.0; //! boundary offset from particle emitter location - Vector2 boundary_offset; + Vector2 offset; //! reset on exit or stop velocity and set max postion bool reset_on_exit = false; }; - struct ParticleEmitterData{ + /** + * \brief Holds parameters that control particle emission. + * + * Contains settings for the emitter’s position, particle speed, angle, lifespan, + * boundary, and the sprite used for rendering particles. + */ + struct Data{ //! position of the emitter Vector2 position; //! maximum number of particles - uint32_t max_particles = 0; + const uint32_t max_particles = 0; //! rate of particle emission per update (Lowest value = 0.001 any lower is ignored) double emission_rate = 0; //! min speed of the particles @@ -46,17 +66,24 @@ public: //! force over time (physics) Vector2 force_over_time; //! particle boundary - ParticleBoundary boundary; + Boundary boundary; //! collection of particles std::vector<Particle> particles; //! sprite reference const Sprite* sprite; }; public: - ParticleEmitter(uint32_t game_object_id, const ParticleEmitterData& data); + /** + * \brief Constructs a ParticleEmitter data holder with specified settings. + * + * \param game_object_id Identifier for the game object using this emitter. + * \param data Configuration data defining particle properties. + */ + ParticleEmitter(uint32_t game_object_id, const Data& data); ~ParticleEmitter(); public: - ParticleEmitterData data; + //! Configuration data for particle emission settings. + Data data; }; } // namespace crepe |