151void QQuick3DParticleScaleAffector::affectParticle(
const QQuick3DParticleData &, QQuick3DParticleDataCurrent *d,
float time)
155 const auto fract = [](
const float v) ->
float {
156 return v - qFloor(v);
158 const auto lerp = [](
const float a,
const float b,
const float f) ->
float {
159 return a + (b - a) * f;
161 const auto smoothstep = [](
const float a,
const float b,
const float f) ->
float {
162 return a + (b - a) * f * f * (3.0f - 2.0f * f);
165 float pos = fract(time /
float(m_duration * 0.001f));
168 scale = lerp(m_minSize, m_maxSize, m_easing.valueForProgress(pos));
169 scale = qMax(scale, 0.0f);
173 scale = lerp(m_minSize, m_maxSize, m_easing.valueForProgress(pos * 2.0f));
175 scale = lerp(m_maxSize, m_minSize, m_easing.valueForProgress((pos - 0.5) * 2.0f));
176 scale = qMax(scale, 0.0f);
179 scale = m_minSize + (m_maxSize - m_minSize) * (1.0f + qSin(2.0f *
M_PI * pos)) * 0.5f;
182 scale = m_minSize + (m_maxSize - m_minSize) * qAbs(qSin(2.0f *
M_PI * pos));
191 scale = smoothstep(m_minSize, m_maxSize, pos);