Particle System¶
The particle system uses an object pool: inactive particles are reused instead of being allocated every frame, giving stable performance with no runtime allocations and predictable memory usage.
Creating a system¶
ParticleSystem particles(1000); // max capacity
Configuration¶
ParticleConfig config;
config.LifeTime = 1.5f;
config.SpeedMin = 50.0f;
config.SpeedMax = 200.0f;
config.SizeStart = 16.0f;
config.SizeEnd = 0.0f;
config.ColorStart = {1, 1, 0, 1};
config.ColorEnd = {1, 0, 0, 0};
config.Gravity = {0, 150};
config.DirectionAngle = 0.0f;
config.SpreadAngle = glm::radians(45.0f);
config.RotationSpeedMin = -90.0f;
config.RotationSpeedMax = 90.0f;
Emitting particles¶
particles.Emit({400, 300}, 20, config);
| Parameter | Description |
|---|---|
| Position | Spawn position |
| Count | Number of particles |
| Config | Particle configuration |
Updating & rendering¶
particles.Update(dt);
particles.Draw();
Statistics¶
uint32_t active = particles.GetActiveCount();
uint32_t capacity = particles.GetCapacity();