30 Q_PROPERTY(
bool relative READ relative WRITE setRelative NOTIFY relativeChanged)
31 Q_PROPERTY(QQuickDirection *position READ position WRITE setPosition NOTIFY positionChanged RESET positionReset)
32 Q_PROPERTY(QQuickDirection *velocity READ velocity WRITE setVelocity NOTIFY velocityChanged RESET velocityReset)
33 Q_PROPERTY(QQuickDirection *acceleration READ acceleration WRITE setAcceleration NOTIFY accelerationChanged RESET accelerationReset)
34 QML_NAMED_ELEMENT(Affector)
35 QML_ADDED_IN_VERSION(2, 0)
38 explicit QQuickCustomAffector(QQuickItem *parent =
nullptr);
39 void affectSystem(qreal dt) override;
41 QQuickDirection * position()
const
46 QQuickDirection * velocity()
const
51 QQuickDirection * acceleration()
const
53 return m_acceleration;
58 m_position = &m_nullVector;
63 m_velocity = &m_nullVector;
66 void accelerationReset()
68 m_acceleration = &m_nullVector;
78 void affectParticles(
const QList<QQuickV4ParticleData> &particles, qreal dt);
80 void positionChanged(QQuickDirection * arg);
82 void velocityChanged(QQuickDirection * arg);
84 void accelerationChanged(QQuickDirection * arg);
86 void relativeChanged(
bool arg);
89 void setPosition(QQuickDirection * arg)
91 if (m_position != arg) {
93 Q_EMIT positionChanged(arg);
97 void setVelocity(QQuickDirection * arg)
99 if (m_velocity != arg) {
101 Q_EMIT velocityChanged(arg);
105 void setAcceleration(QQuickDirection * arg)
107 if (m_acceleration != arg) {
108 m_acceleration = arg;
109 Q_EMIT accelerationChanged(arg);
113 void setRelative(
bool arg)
115 if (m_relative != arg) {
117 Q_EMIT relativeChanged(arg);
122 bool isAffectConnected();
123 bool affectParticle(QQuickParticleData *d, qreal dt) override;
126 void affectProperties(
const QList<QQuickParticleData*> &particles, qreal dt);
127 QQuickDirection * m_position;
128 QQuickDirection * m_velocity;
129 QQuickDirection * m_acceleration;
131 QQuickDirection m_nullVector;