group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
ExplosionVfxEffect.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
11
12#include <array>
13#include <cstdint>
14#include <glm/glm.hpp>
15#include <vector>
16
23{
24public:
26 void update(float dt, Registry& registry, glm::vec3 camPos, glm::vec3 camForward);
27
29 void spawn(glm::vec3 pos, glm::vec3 normal, float radius, ExplosionVfxKind kind);
30
32 void driveGroundFire(entt::entity fieldEntity, glm::vec3 pos, float radius, float remaining, float duration);
33
34 [[nodiscard]] const VfxSpriteParticle* spriteData() const { return sortedSprites_.data(); }
35 [[nodiscard]] uint32_t spriteCount() const { return static_cast<uint32_t>(sortedSprites_.size()); }
36
37 [[nodiscard]] const VfxDebrisParticle* debrisData() const { return debrisPool_.rawData(); }
38 [[nodiscard]] uint32_t debrisCount() const { return debrisPool_.liveCount(); }
39
40private:
42 {
43 entt::entity entity = entt::null;
44 glm::vec3 pos{0.0f};
45 float radius = 0.0f;
46 float remaining = 0.0f;
47 float duration = 0.0f;
48 float flameAccumulator = 0.0f;
49 float smokeAccumulator = 0.0f;
50 float emberAccumulator = 0.0f;
51 bool spawnedBurst = false;
52 uint32_t seed = 0;
53 };
54
57 std::vector<VfxSpriteParticle> sortedSprites_;
58
59 std::vector<GroundFireAnchor> groundFire_;
60 uint32_t sequence_ = 1;
61
62 void spawnSprite(glm::vec3 pos,
63 glm::vec3 vel,
64 float size,
65 glm::vec4 color,
66 float lifetime,
67 float growthRate,
68 float spinRate,
69 float rotation,
70 int frameStart,
71 int frameCount,
72 float fps,
73 int material,
74 float stretch,
75 float softness,
76 float priority);
77 void spawnDebris(glm::vec3 pos,
78 glm::vec3 vel,
79 float size,
80 glm::vec4 color,
81 float lifetime,
82 float gravity,
83 float drag,
84 float stretch);
85 void spawnRocket(glm::vec3 pos, glm::vec3 normal, float radius);
86 void spawnFrag(glm::vec3 pos, glm::vec3 normal, float radius);
87 void spawnSticky(glm::vec3 pos, glm::vec3 normal, float radius);
88 void spawnMolotovBurst(glm::vec3 pos, glm::vec3 normal, float radius);
89 void tickGroundFire(GroundFireAnchor& anchor, float dt);
90
91 [[nodiscard]] uint32_t nextSeed() { return sequence_++ * 747796405u + 2891336453u; }
92};
93
ExplosionVfxKind explosionVfxKindForWeapon(WeaponType type)
Definition ExplosionVfxEffect.cpp:64
Persistent area-of-effect that damages players inside it (Molotov).
Fixed-capacity particle pool with O(1) swap-remove.
GPU-uploadable particle structs for all effect categories.
ExplosionVfxKind
Distinct explosion VFX profiles authored by weapon family.
Definition ParticleTypes.hpp:12
Projectile component and weapon/surface type enumerations.
Shared ECS registry type alias for the game engine.
entt::registry Registry
Shared ECS registry type alias.
Definition Registry.hpp:11
WeaponType
Weapon type — determines tracer style, damage, sound, and impact effects.
Definition WeaponState.hpp:12
Owns the new explosion VFX path for rockets, frags, stickies, and molotovs.
Definition ExplosionVfxEffect.hpp:23
ParticlePool< VfxSpriteParticle, 2048 > spritePool_
Definition ExplosionVfxEffect.hpp:55
uint32_t nextSeed()
Definition ExplosionVfxEffect.hpp:91
void spawnMolotovBurst(glm::vec3 pos, glm::vec3 normal, float radius)
Definition ExplosionVfxEffect.cpp:263
uint32_t spriteCount() const
Definition ExplosionVfxEffect.hpp:35
void spawnSticky(glm::vec3 pos, glm::vec3 normal, float radius)
Definition ExplosionVfxEffect.cpp:226
const VfxSpriteParticle * spriteData() const
Definition ExplosionVfxEffect.hpp:34
void update(float dt, Registry &registry, glm::vec3 camPos, glm::vec3 camForward)
Advance all active explosion VFX and persistent ground fire anchors.
Definition ExplosionVfxEffect.cpp:386
ParticlePool< VfxDebrisParticle, 1024 > debrisPool_
Definition ExplosionVfxEffect.hpp:56
void spawnDebris(glm::vec3 pos, glm::vec3 vel, float size, glm::vec4 color, float lifetime, float gravity, float drag, float stretch)
Definition ExplosionVfxEffect.cpp:108
void spawn(glm::vec3 pos, glm::vec3 normal, float radius, ExplosionVfxKind kind)
Spawn a one-shot explosion burst.
Definition ExplosionVfxEffect.cpp:128
std::vector< VfxSpriteParticle > sortedSprites_
Definition ExplosionVfxEffect.hpp:57
const VfxDebrisParticle * debrisData() const
Definition ExplosionVfxEffect.hpp:37
void spawnRocket(glm::vec3 pos, glm::vec3 normal, float radius)
Definition ExplosionVfxEffect.cpp:152
void tickGroundFire(GroundFireAnchor &anchor, float dt)
Definition ExplosionVfxEffect.cpp:318
uint32_t debrisCount() const
Definition ExplosionVfxEffect.hpp:38
void driveGroundFire(entt::entity fieldEntity, glm::vec3 pos, float radius, float remaining, float duration)
Drive persistent molotov ground-fire visuals from a replicated FireField.
Definition ExplosionVfxEffect.cpp:297
uint32_t sequence_
Definition ExplosionVfxEffect.hpp:60
void spawnFrag(glm::vec3 pos, glm::vec3 normal, float radius)
Definition ExplosionVfxEffect.cpp:189
void spawnSprite(glm::vec3 pos, glm::vec3 vel, float size, glm::vec4 color, float lifetime, float growthRate, float spinRate, float rotation, int frameStart, int frameCount, float fps, int material, float stretch, float softness, float priority)
Definition ExplosionVfxEffect.cpp:79
std::vector< GroundFireAnchor > groundFire_
Definition ExplosionVfxEffect.hpp:59
Definition ExplosionVfxEffect.hpp:42
float duration
Definition ExplosionVfxEffect.hpp:47
float radius
Definition ExplosionVfxEffect.hpp:45
float remaining
Definition ExplosionVfxEffect.hpp:46
glm::vec3 pos
Definition ExplosionVfxEffect.hpp:44
float flameAccumulator
Definition ExplosionVfxEffect.hpp:48
bool spawnedBurst
Definition ExplosionVfxEffect.hpp:51
float emberAccumulator
Definition ExplosionVfxEffect.hpp:50
uint32_t seed
Definition ExplosionVfxEffect.hpp:52
entt::entity entity
Definition ExplosionVfxEffect.hpp:43
float smokeAccumulator
Definition ExplosionVfxEffect.hpp:49
Fixed-capacity particle pool with O(1) swap-remove.
Definition ParticlePool.hpp:22
Tiny shard/spark particle used by explosion debris and embers.
Definition ParticleTypes.hpp:107
Animated textured sprite used by the fresh explosion VFX path.
Definition ParticleTypes.hpp:91