3 #include "../particle_script.h"
4 #include "../../nodes/particles/particle.h"
16 interpolate_(interpolate) {}
20 auto size = (float) alphas_.size();
21 float fsize = float(size);
23 for(
auto i = 0u; i < particle_count; ++i, ++particle) {
24 const float e = (particle->lifetime - particle->ttl);
25 const float n = smlt::fast_divide(e, particle->lifetime);
26 const float fsizen = fsize * n;
28 uint8_t color = smlt::clamp(fsizen, 0.0f, fsize);
30 particle->color.a = alphas_[color];
33 const float f = fsizen - std::floor(fsizen);
34 auto next_alpha = alphas_[std::min((uint32_t) color + 1, (uint32_t) size - 1)];
35 particle->color.a = (particle->color.a * (1.0f - f)) + (next_alpha * f);
40 std::vector<float> alphas_;
41 bool interpolate_ =
true;