Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
ParticlePositionColourUpdater.cpp
Go to the documentation of this file.
1
2
4
5namespace Divide {
6
7void ParticlePositionColourUpdater::update( [[maybe_unused]] const U64 deltaTimeUS, ParticleData& p) {
8 const U32 endID = p.aliveCount();
9 const F32 diffr = _maxPos.x - _minPos.x;
10 const F32 diffg = _maxPos.y - _minPos.y;
11 const F32 diffb = _maxPos.z - _minPos.z;
12
13
14 for (U32 i = 0; i < endID; ++i) {
15 p._colour[i].set(
16 (p._position[i].x - _minPos.x) /
17 diffr, // lerp(p._startColour[i].r, p._endColour[i].r, scaler),
18 (p._position[i].y - _minPos.y) /
19 diffg, // lerp(p._startColour[i].g, p._endColour[i].g, scaleg),
20 (p._position[i].z - _minPos.z) /
21 diffb, // lerp(p._startColour[i].b, p._endColour[i].b,
22 // scaleb),
23 Lerp(to_F32(p._startColour[i].a) / 255.0f,
24 to_F32(p._endColour[i].a) / 255.0f,
25 p._misc[i].y) * 255.0f);
26 }
27}
28
29} //namespace Divide
Container to store data for a given set of particles.
Definition: ParticleData.h:59
vector< FColour4 > _startColour
r,g,b,a = colour and transparency
Definition: ParticleData.h:78
vector< vec4< F32 > > _position
x,y,z = position; w = size
Definition: ParticleData.h:68
U32 aliveCount() const noexcept
Definition: ParticleData.h:117
vector< FColour4 > _colour
r,g,b,a = colour and transparency
Definition: ParticleData.h:76
vector< FColour4 > _endColour
r,g,b,a = colour and transparency
Definition: ParticleData.h:80
vector< vec4< F32 > > _misc
x = time; y = interpolation; z = 1 / time; w = distance to camera sq;
Definition: ParticleData.h:74
void update(U64 deltaTimeUS, ParticleData &p) override
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
T Lerp(T v1, T v2, U t) noexcept
Definition: MathHelper.inl:240
constexpr F32 to_F32(const T value)
uint32_t U32
uint64_t U64