group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
ExplosionEffect.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
9
10#include <glm/glm.hpp>
11
16{
17public:
19 void update(float dt);
20
25 void spawn(glm::vec3 pos, float blastRadius, SmokeEffect& smoke);
26
27 // Shockwave ring particles
28 [[nodiscard]] const BillboardParticle* ringData() const { return ringPool_.rawData(); }
29 [[nodiscard]] uint32_t ringCount() const { return ringPool_.liveCount(); }
30
31private:
32 // We need a separate pool for shockwave rings — different render behaviour from sparks
33 // but same BillboardParticle struct (size drives ring scale, color encodes ring vs disc).
35
38 {
39 glm::vec3 pos;
40 float radius;
41 float delay;
42 bool isFire;
43 };
44 // Holds deferred smoke/fire spawns
45 static constexpr int k_maxPending = 32;
48};
Fixed-capacity particle pool with O(1) swap-remove.
GPU-uploadable particle structs for all effect categories.
Volumetric smoke billboard particle manager with back-to-front sorting.
Spawns shockwave ring + fireball + smoke cloud for rocket explosions.
Definition ExplosionEffect.hpp:16
void update(float dt)
Advance ring animations and tick deferred smoke timers.
Definition ExplosionEffect.cpp:29
void spawn(glm::vec3 pos, float blastRadius, SmokeEffect &smoke)
Spawn a full explosion at pos with given blast radius.
Definition ExplosionEffect.cpp:8
ParticlePool< BillboardParticle, 64 > ringPool_
Definition ExplosionEffect.hpp:34
const BillboardParticle * ringData() const
Definition ExplosionEffect.hpp:28
PendingSmoke pending_[k_maxPending]
Definition ExplosionEffect.hpp:46
int pendingCount_
Definition ExplosionEffect.hpp:47
uint32_t ringCount() const
Definition ExplosionEffect.hpp:29
static constexpr int k_maxPending
Definition ExplosionEffect.hpp:45
Manages volumetric smoke billboard particles.
Definition SmokeEffect.hpp:20
Single billboard particle (sparks, impact flash, shockwave ring).
Definition ParticleTypes.hpp:12
Deferred smoke or fire spawn scheduled after the initial explosion.
Definition ExplosionEffect.hpp:38
float delay
Seconds until spawn.
Definition ExplosionEffect.hpp:41
bool isFire
Definition ExplosionEffect.hpp:42
float radius
Definition ExplosionEffect.hpp:40
glm::vec3 pos
Definition ExplosionEffect.hpp:39
Fixed-capacity particle pool with O(1) swap-remove.
Definition ParticlePool.hpp:22