38 void update(
float dt, glm::vec3 camForward);
45 void spawn(glm::vec3 origin, glm::vec3 hitPos,
WeaponType wt, glm::vec3 camForward);
61 [[nodiscard]] uint32_t
beamCount()
const {
return 0; }
123 static glm::vec3
evalBezier(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3,
float t);
126 static glm::vec3
evalBezierTangent(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3,
float t);
129 static void randomizeCP(glm::vec3 origin, glm::vec3 hitPos, glm::vec3 camForward, glm::vec3& cp1, glm::vec3& cp2);
139 void appendArcStrip(
const std::vector<glm::vec3>& pts,
float radius, glm::vec4 color, glm::vec3 camForward);
GPU-uploadable particle structs for all effect categories.
Projectile component and weapon/surface type enumerations.
WeaponType
Weapon type — determines tracer style, damage, sound, and impact effects.
Definition WeaponState.hpp:12
Hitscan energy beam using fBm (fractional Brownian motion) path deviation.
Definition HitscanEffect.hpp:33
const ArcVertex * arcData() const
Get pointer to the arc vertex array for GPU upload.
Definition HitscanEffect.hpp:49
static constexpr int k_bezierSegs
Samples along main arc.
Definition HitscanEffect.hpp:66
BezierBeam beams_[k_maxBeams]
Definition HitscanEffect.hpp:117
static void rerandomizeBranches(BezierBeam &beam, glm::vec3 camForward)
Re-randomize all branch parameters on a beam for flicker.
Definition HitscanEffect.cpp:130
static glm::vec3 evalBezier(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, float t)
Evaluate a cubic Bezier curve at parameter t.
Definition HitscanEffect.cpp:93
static constexpr int k_branchSegs
Samples along each branch.
Definition HitscanEffect.hpp:67
void appendArcStrip(const std::vector< glm::vec3 > &pts, float radius, glm::vec4 color, glm::vec3 camForward)
Append a camera-facing triangle-strip ribbon to arcVerts_.
Definition HitscanEffect.cpp:149
static constexpr int k_maxBranches
Definition HitscanEffect.hpp:68
void update(float dt, glm::vec3 camForward)
Update all active beams, rebuilding arc vertex data each frame.
Definition HitscanEffect.cpp:236
uint32_t activeBeamCount() const
Get the number of active beams.
Definition HitscanEffect.cpp:394
static constexpr int k_maxBeams
Definition HitscanEffect.hpp:65
static void randomizeCP(glm::vec3 origin, glm::vec3 hitPos, glm::vec3 camForward, glm::vec3 &cp1, glm::vec3 &cp2)
Randomize Bezier control points for a new arc shape.
Definition HitscanEffect.cpp:107
static constexpr float k_interpDuration
Bezier morph time (s).
Definition HitscanEffect.hpp:70
static constexpr float k_beamLifetime
Definition HitscanEffect.hpp:69
std::vector< ArcVertex > arcVerts_
Definition HitscanEffect.hpp:118
uint32_t beamCount() const
Definition HitscanEffect.hpp:61
static glm::vec3 evalBezierTangent(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, float t)
Evaluate the tangent of a cubic Bezier curve at parameter t.
Definition HitscanEffect.cpp:99
void spawn(glm::vec3 origin, glm::vec3 hitPos, WeaponType wt, glm::vec3 camForward)
Fire a beam.
Definition HitscanEffect.cpp:189
const HitscanBeam * beamData() const
Definition HitscanEffect.hpp:60
uint32_t arcCount() const
Get the number of arc vertices currently generated.
Definition HitscanEffect.hpp:53
Lightning arc vertex (pre-expanded triangle strip, uploaded as flat stream).
Definition ParticleTypes.hpp:58
Hitscan energy beam (main glowing quad).
Definition ParticleTypes.hpp:46
State for a single active Bezier-spine beam.
Definition HitscanEffect.hpp:93
float time
Definition HitscanEffect.hpp:102
glm::vec3 cp2Prev
Definition HitscanEffect.hpp:98
glm::vec3 cp1Curr
Definition HitscanEffect.hpp:97
float noiseSeed
Base fBm seed (re-rolled each return stroke).
Definition HitscanEffect.hpp:103
float lifetime
Definition HitscanEffect.hpp:113
glm::vec3 origin
Definition HitscanEffect.hpp:94
static constexpr float k_branchRetime
Branch re-randomize interval.
Definition HitscanEffect.hpp:109
bool active
Definition HitscanEffect.hpp:114
glm::vec3 hitPos
Definition HitscanEffect.hpp:94
glm::vec3 cp1Prev
Definition HitscanEffect.hpp:98
float branchTimer
Definition HitscanEffect.hpp:108
ReturnStroke returnStrokes[3]
Definition HitscanEffect.hpp:111
float warpSeed
Domain warp seed.
Definition HitscanEffect.hpp:104
float interpT
Definition HitscanEffect.hpp:99
Branch branches[k_maxBranches]
Definition HitscanEffect.hpp:106
int branchCount
Definition HitscanEffect.hpp:107
glm::vec3 cp2Curr
Definition HitscanEffect.hpp:97
A single forked branch diverging from the main arc.
Definition HitscanEffect.hpp:76
float length
World length as fraction of main bolt length.
Definition HitscanEffect.hpp:78
float tStart
Position along main arc [0,1].
Definition HitscanEffect.hpp:77
float seed
Independent fBm seed.
Definition HitscanEffect.hpp:80
float angle
Divergence from tangent (radians).
Definition HitscanEffect.hpp:79
A scheduled return stroke that re-randomises the arc path.
Definition HitscanEffect.hpp:85
bool fired
Definition HitscanEffect.hpp:88
float fireAt
Elapsed seconds after initial spawn.
Definition HitscanEffect.hpp:86
float seed
Definition HitscanEffect.hpp:87