39 void drive(uint32_t key, glm::vec3 origin, glm::vec3 target);
44 void update(
float dt, glm::vec3 camForward);
96 static glm::vec3
evalBezier(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3,
float t);
97 static glm::vec3
evalBezierTangent(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3,
float t);
101 void appendArcStrip(
const std::vector<glm::vec3>& pts,
float radius, glm::vec4 color, glm::vec3 camForward);
GPU-uploadable particle structs for all effect categories.
Sustained curved energy-arc beams, keyed by owner entity id.
Definition TeslaBeamEffect.hpp:29
static void rerandomizeBranches(Beam &beam)
Definition TeslaBeamEffect.cpp:79
static constexpr int k_branchSegs
Samples along each branch.
Definition TeslaBeamEffect.hpp:58
Beam * findOrAllocBeam(uint32_t key)
Definition TeslaBeamEffect.cpp:132
static constexpr float k_keepAlive
Grace before an undriven beam starts fading.
Definition TeslaBeamEffect.hpp:61
static glm::vec3 evalBezier(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, float t)
Definition TeslaBeamEffect.cpp:67
uint32_t activeBeamCount() const
Number of beams currently alive.
Definition TeslaBeamEffect.cpp:287
uint32_t arcCount() const
Number of arc vertices generated this frame.
Definition TeslaBeamEffect.hpp:50
static constexpr float k_fadeTime
Fade in/out window (s).
Definition TeslaBeamEffect.hpp:60
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 TeslaBeamEffect.cpp:93
void update(float dt, glm::vec3 camForward)
Advance animation, age out undriven beams, and rebuild arc verts.
Definition TeslaBeamEffect.cpp:175
static constexpr int k_maxBeams
Definition TeslaBeamEffect.hpp:56
static glm::vec3 evalBezierTangent(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, float t)
Definition TeslaBeamEffect.cpp:73
static constexpr int k_bezierSegs
Samples along the main arc.
Definition TeslaBeamEffect.hpp:57
void drive(uint32_t key, glm::vec3 origin, glm::vec3 target)
Refresh (or start) the beam owned by key for this frame.
Definition TeslaBeamEffect.cpp:153
Beam beams_[k_maxBeams]
Definition TeslaBeamEffect.hpp:93
static constexpr float k_bowFrac
Spine sag as a fraction of beam length.
Definition TeslaBeamEffect.hpp:62
const ArcVertex * arcData() const
Arc vertex array for GPU upload (nullptr if empty).
Definition TeslaBeamEffect.hpp:47
static constexpr int k_maxBranches
Definition TeslaBeamEffect.hpp:59
static constexpr float k_branchRetime
Branch re-randomise interval (s).
Definition TeslaBeamEffect.hpp:63
std::vector< ArcVertex > arcVerts_
Definition TeslaBeamEffect.hpp:94
Lightning arc vertex (pre-expanded triangle strip, uploaded as flat stream).
Definition ParticleTypes.hpp:67
State for a single sustained, curved beam.
Definition TeslaBeamEffect.hpp:76
Branch branches[k_maxBranches]
Definition TeslaBeamEffect.hpp:88
glm::vec3 target
Definition TeslaBeamEffect.hpp:80
float keepAlive
Counts down while undriven (drives fade-out).
Definition TeslaBeamEffect.hpp:83
bool active
Definition TeslaBeamEffect.hpp:78
uint32_t key
Definition TeslaBeamEffect.hpp:77
glm::vec3 origin
Definition TeslaBeamEffect.hpp:79
float time
fBm animation clock.
Definition TeslaBeamEffect.hpp:84
float branchTimer
Definition TeslaBeamEffect.hpp:90
int branchCount
Definition TeslaBeamEffect.hpp:89
float warpSeed
Definition TeslaBeamEffect.hpp:86
float age
Time since creation (drives fade-in).
Definition TeslaBeamEffect.hpp:82
float seed
Definition TeslaBeamEffect.hpp:85
One forked branch diverging from the main arc.
Definition TeslaBeamEffect.hpp:67
float seed
Independent fBm seed.
Definition TeslaBeamEffect.hpp:71
float tStart
Position along main arc [0,1].
Definition TeslaBeamEffect.hpp:68
float length
Length as fraction of main bolt length.
Definition TeslaBeamEffect.hpp:69
float angle
Divergence from tangent (radians).
Definition TeslaBeamEffect.hpp:70