.. _program_listing_file__home_runner_work_Legion-Engine_Legion-Engine_legion_engine_rendering_data_particle_system_base.hpp: Program Listing for File particle_system_base.hpp ================================================= |exhale_lsh| :ref:`Return to documentation for file ` (``/home/runner/work/Legion-Engine/Legion-Engine/legion/engine/rendering/data/particle_system_base.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include namespace legion::rendering { class ParticleSystemBase { friend class ParticleSystemManager; public: virtual ~ParticleSystemBase() = default; virtual void setup(ecs::component_handle particle_emitter) const LEGION_IMPURE; virtual void update(std::vector& particle_list, ecs::component_handle particle_emitter, ecs::EntityQuery& entities, time::span delta_time) const LEGION_IMPURE; protected: virtual void createParticle( ecs::entity_handle ent) const; virtual void cleanUpParticle( ecs::entity_handle particleHandle, particle_emitter& emitterHandle) const; ecs::component_handle checkToRecycle( particle_emitter& emitterHandle) const; bool m_looping; float m_maxLifeTime; float m_startingLifeTime; uint m_spawnRate; uint m_particleCount; uint m_maxParticles; math::vec3 m_startingVelocity; math::vec3 m_startingSize; float m_sizeOverLifetime; material_handle m_particleMaterial; model_handle m_particleModel; static ecs::EcsRegistry* m_registry; }; }