4#include <QtCore/qmath.h>
39 return m_globalAmount;
73 return m_globalPaceStart;
85 return m_uniqueAmount;
114 return m_uniqueAmountVariation;
130 return m_uniquePaceVariation;
145 return m_fadeInDuration;
160 return m_fadeOutDuration;
263 if (m_fadeInDuration > 0) {
264 smooth =
time / (float(m_fadeInDuration) / 1000.0f);
265 smooth = std::min(1.0f, smooth);
267 if (m_fadeOutDuration > 0) {
269 float smoothOut = timeLeft / (float(m_fadeOutDuration) / 1000.0f);
271 smooth = std::min(smoothOut, smooth);
274 const float pi2 = float(
M_PI * 2);
277 d->position.setX(
d->position.x() + smooth *
QPSIN(m_globalPaceStart.
x() +
time * pi2 * m_globalPace.
x()) * m_globalAmount.
x());
279 d->position.setY(
d->position.y() + smooth *
QPSIN(m_globalPaceStart.
y() +
time * pi2 * m_globalPace.
y()) * m_globalAmount.
y());
281 d->position.setZ(
d->position.z() + smooth *
QPSIN(m_globalPaceStart.
z() +
time * pi2 * m_globalPace.
z()) * m_globalAmount.
z());
287 float paceVariation = 1.0f + m_uniquePaceVariation - 2.0f * rand->get(sd.
index,
QPRand::WanderXPV) * m_uniquePaceVariation;
288 float amountVariation = 1.0f + m_uniqueAmountVariation - 2.0f * rand->get(sd.
index,
QPRand::WanderXAV) * m_uniqueAmountVariation;
290 float pace = startPace + paceVariation *
time * pi2 * m_uniquePace.
x();
291 float amount = amountVariation * m_uniqueAmount.
x();
292 d->position.setX(
d->position.x() + smooth *
QPSIN(pace) * amount);
296 float paceVariation = 1.0f + m_uniquePaceVariation - 2.0f * rand->get(sd.
index,
QPRand::WanderYPV) * m_uniquePaceVariation;
297 float amountVariation = 1.0f + m_uniqueAmountVariation - 2.0f * rand->get(sd.
index,
QPRand::WanderYAV) * m_uniqueAmountVariation;
299 float pace = startPace + paceVariation *
time * pi2 * m_uniquePace.
y();
300 float amount = amountVariation * m_uniqueAmount.
y();
301 d->position.setY(
d->position.y() + smooth *
QPSIN(pace) * amount);
305 float paceVariation = 1.0f + m_uniquePaceVariation - 2.0f * rand->get(sd.
index,
QPRand::WanderZPV) * m_uniquePaceVariation;
306 float amountVariation = 1.0f + m_uniqueAmountVariation - 2.0f * rand->get(sd.
index,
QPRand::WanderZAV) * m_uniqueAmountVariation;
308 float pace = startPace + paceVariation *
time * pi2 * m_uniquePace.
z();
309 float amount = amountVariation * m_uniqueAmount.
z();
310 d->position.setZ(
d->position.z() + smooth *
QPSIN(pace) * amount);
QQuick3DParticleSystem * system
QQuick3DParticleWander(QQuick3DNode *parent=nullptr)
\qmltype Wander3D \inherits Affector3D \inqmlmodule QtQuick3D.Particles3D
void uniqueAmountVariationChanged()
void setFadeInDuration(int fadeInDuration)
void setUniqueAmountVariation(float uniqueAmountVariation)
void setGlobalAmount(const QVector3D &globalAmount)
void setGlobalPaceStart(const QVector3D &globalPaceStart)
void setGlobalPace(const QVector3D &globalPace)
QVector3D globalPaceStart
void affectParticle(const QQuick3DParticleData &sd, QQuick3DParticleDataCurrent *d, float time) override
float uniqueAmountVariation
void fadeOutDurationChanged()
void uniqueAmountChanged()
void setUniquePaceVariation(float uniquePaceVariation)
void fadeInDurationChanged()
float uniquePaceVariation
void setUniqueAmount(const QVector3D &uniqueAmount)
void globalPaceStartChanged()
void setFadeOutDuration(int fadeOutDuration)
void setUniquePace(const QVector3D &uniquePace)
void uniquePaceVariationChanged()
void globalAmountChanged()
The QVector3D class represents a vector or vertex in 3D space.
constexpr float y() const noexcept
Returns the y coordinate of this point.
constexpr float x() const noexcept
Returns the x coordinate of this point.
constexpr float z() const noexcept
Returns the z coordinate of this point.
Combined button and popup list for selecting options.
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) noexcept
bool qFuzzyIsNull(qfloat16 f) noexcept
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent