23 void drive(uint32_t key,
29 void debugPreview(glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint,
bool locked,
float lockStrength);
30 void debugPulse(glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint,
bool locked,
float lockStrength);
31 void update(
float dt, glm::vec3 camForward);
84 std::array<Beam, k_maxBeams>
beams_{};
90 [[nodiscard]]
static float hash01(uint32_t n);
91 [[nodiscard]]
static float smooth01(
float v);
92 [[nodiscard]]
static glm::vec3
safeNormalize(glm::vec3 v, glm::vec3 fallback);
93 [[nodiscard]]
static glm::vec3
cubic(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3,
float t);
103 const std::vector<glm::vec3>& pts,
106 glm::vec3 camForward);
111 glm::vec3 camForward);
113 const std::vector<glm::vec3>& mainPts,
119 glm::vec3 camForward);
128 glm::vec3 camForward);
135 glm::vec3 camForward);
GPU-uploadable particle structs for all effect categories.
Continuous EnergyGun lightning built on the same ArcVertex path as Railgun.
Definition EnergyTeslaArcEffect.hpp:15
void appendArcStrip(std::vector< ArcVertex > &out, const std::vector< glm::vec3 > &pts, float radius, glm::vec4 color, glm::vec3 camForward)
Definition EnergyTeslaArcEffect.cpp:212
static constexpr int k_maxBranches
Definition EnergyTeslaArcEffect.hpp:50
static constexpr int k_maxStrands
Definition EnergyTeslaArcEffect.hpp:51
uint32_t activeBeamCount() const
Definition EnergyTeslaArcEffect.cpp:483
static constexpr int k_maxBeams
Definition EnergyTeslaArcEffect.hpp:47
std::vector< ArcVertex > detailArcVerts_
Definition EnergyTeslaArcEffect.hpp:86
void debugPreview(glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint, bool locked, float lockStrength)
Definition EnergyTeslaArcEffect.cpp:203
static PathSample buildGuidePath(glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint, bool locked, float lockStrength)
Definition EnergyTeslaArcEffect.cpp:92
Beam * findOrAllocBeam(uint32_t key)
Definition EnergyTeslaArcEffect.cpp:129
const ArcVertex * detailArcData() const
Definition EnergyTeslaArcEffect.hpp:35
uint32_t detailArcCount() const
Definition EnergyTeslaArcEffect.hpp:36
std::vector< ArcVertex > mainArcVerts_
Definition EnergyTeslaArcEffect.hpp:85
uint32_t debugKey_
Definition EnergyTeslaArcEffect.hpp:88
static PathSample buildGuidePathForTest(glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint, bool locked, float lockStrength)
Definition EnergyTeslaArcEffect.cpp:120
uint32_t debugPreviewKey_
Definition EnergyTeslaArcEffect.hpp:87
static constexpr int k_mainSegs
Definition EnergyTeslaArcEffect.hpp:48
static constexpr int k_branchSegs
Definition EnergyTeslaArcEffect.hpp:49
static glm::vec3 cubic(glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, glm::vec3 p3, float t)
Definition EnergyTeslaArcEffect.cpp:86
static glm::vec3 safeNormalize(glm::vec3 v, glm::vec3 fallback)
Definition EnergyTeslaArcEffect.cpp:77
void appendBranches(const Beam &beam, const std::vector< glm::vec3 > &mainPts, glm::vec3 axisN, glm::vec3 perp, glm::vec3 perp2, float len, float fade, glm::vec3 camForward)
Definition EnergyTeslaArcEffect.cpp:261
static float hash01(uint32_t n)
Definition EnergyTeslaArcEffect.cpp:66
uint32_t mainArcCount() const
Definition EnergyTeslaArcEffect.hpp:34
static constexpr float k_fadeTime
Definition EnergyTeslaArcEffect.hpp:52
void appendLayeredBolt(const std::vector< glm::vec3 > &pts, float fade, float radiusScale, bool primary, glm::vec3 camForward)
Definition EnergyTeslaArcEffect.cpp:249
void rerandomizeBranches(Beam &beam)
Definition EnergyTeslaArcEffect.cpp:148
void drive(uint32_t key, glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint, bool locked, float lockStrength)
Definition EnergyTeslaArcEffect.cpp:167
const ArcVertex * mainArcData() const
Definition EnergyTeslaArcEffect.hpp:33
void appendEnergyBall(const Beam &beam, glm::vec3 axisN, glm::vec3 perp, glm::vec3 perp2, float len, float fade, glm::vec3 camForward)
Definition EnergyTeslaArcEffect.cpp:335
std::array< Beam, k_maxBeams > beams_
Definition EnergyTeslaArcEffect.hpp:84
uint32_t arcCount() const
Definition EnergyTeslaArcEffect.hpp:37
void appendCorona(glm::vec3 center, glm::vec3 axisN, glm::vec3 perp, glm::vec3 perp2, float len, float fade, float seed, bool targetCorona, glm::vec3 camForward)
Definition EnergyTeslaArcEffect.cpp:309
void debugPulse(glm::vec3 origin, glm::vec3 guidePoint, glm::vec3 hitPoint, bool locked, float lockStrength)
Definition EnergyTeslaArcEffect.cpp:194
static constexpr float k_branchRetime
Definition EnergyTeslaArcEffect.hpp:53
static float smooth01(float v)
Definition EnergyTeslaArcEffect.cpp:71
void update(float dt, glm::vec3 camForward)
Definition EnergyTeslaArcEffect.cpp:384
Lightning arc vertex (pre-expanded triangle strip, uploaded as flat stream).
Definition ParticleTypes.hpp:67
Definition EnergyTeslaArcEffect.hpp:65
bool drivenThisFrame
Definition EnergyTeslaArcEffect.hpp:79
float seed
Definition EnergyTeslaArcEffect.hpp:76
uint32_t key
Definition EnergyTeslaArcEffect.hpp:66
bool active
Definition EnergyTeslaArcEffect.hpp:67
glm::vec3 guidePoint
Definition EnergyTeslaArcEffect.hpp:70
float lockStrength
Definition EnergyTeslaArcEffect.hpp:72
float age
Definition EnergyTeslaArcEffect.hpp:74
float time
Definition EnergyTeslaArcEffect.hpp:75
bool locked
Definition EnergyTeslaArcEffect.hpp:68
int branchCount
Definition EnergyTeslaArcEffect.hpp:81
float branchTimer
Definition EnergyTeslaArcEffect.hpp:78
glm::vec3 origin
Definition EnergyTeslaArcEffect.hpp:69
std::array< Branch, k_maxBranches > branches
Definition EnergyTeslaArcEffect.hpp:80
float displayedLock
Definition EnergyTeslaArcEffect.hpp:73
glm::vec3 hitPoint
Definition EnergyTeslaArcEffect.hpp:71
float warpSeed
Definition EnergyTeslaArcEffect.hpp:77
Definition EnergyTeslaArcEffect.hpp:56
float side
Definition EnergyTeslaArcEffect.hpp:60
float tStart
Definition EnergyTeslaArcEffect.hpp:57
float seed
Definition EnergyTeslaArcEffect.hpp:61
float length
Definition EnergyTeslaArcEffect.hpp:58
float angle
Definition EnergyTeslaArcEffect.hpp:59
Definition EnergyTeslaArcEffect.hpp:18
std::array< glm::vec3, 33 > points
Definition EnergyTeslaArcEffect.hpp:19
uint32_t count
Definition EnergyTeslaArcEffect.hpp:20