77void QQuick3DParticleTargetDirection::setPositionVariation(
const QVector3D &positionVariation)
79 if (m_positionVariation == positionVariation)
82 m_positionVariation = positionVariation;
83 Q_EMIT positionVariationChanged();
152void QQuick3DParticleTargetDirection::setMagnitudeVariation(
float magnitudeVariation)
154 if (qFuzzyCompare(m_magnitudeVariation, magnitudeVariation))
157 m_magnitudeVariation = magnitudeVariation;
158 Q_EMIT magnitudeChangedVariation();
161QVector3D QQuick3DParticleTargetDirection::sample(
const QQuick3DParticleData &d)
163 QVector3D ret = m_position - d.startPosition;
166 auto rand = m_system->rand();
168 ret.setX(ret.x() - m_positionVariation.x() + rand->get(d.index, QPRand::TDirPosXV) * m_positionVariation.x() * 2.0f);
169 ret.setY(ret.y() - m_positionVariation.y() + rand->get(d.index, QPRand::TDirPosYV) * m_positionVariation.y() * 2.0f);
170 ret.setZ(ret.z() - m_positionVariation.z() + rand->get(d.index, QPRand::TDirPosZV) * m_positionVariation.z() * 2.0f);
173 ret *= (m_magnitude - m_magnitudeVariation + rand->get(d.index, QPRand::TDirMagV) * m_magnitudeVariation * 2.0f);