aboutsummaryrefslogtreecommitdiffstats
path: root/src/particles/qquickcustomaffector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/particles/qquickcustomaffector.cpp')
-rw-r--r--src/particles/qquickcustomaffector.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/particles/qquickcustomaffector.cpp b/src/particles/qquickcustomaffector.cpp
index 55310f92d5..b95810bb62 100644
--- a/src/particles/qquickcustomaffector.cpp
+++ b/src/particles/qquickcustomaffector.cpp
@@ -122,11 +122,15 @@ void QQuickCustomAffector::affectSystem(qreal dt)
updateOffsets();
QList<QQuickParticleData*> toAffect;
- foreach (QQuickParticleGroupData* gd, m_system->groupData)
- if (activeGroup(m_system->groupData.key(gd)))
- foreach (QQuickParticleData* d, gd->data)
- if (shouldAffect(d))
+ foreach (QQuickParticleGroupData* gd, m_system->groupData) {
+ if (activeGroup(gd->index)) {
+ foreach (QQuickParticleData* d, gd->data) {
+ if (shouldAffect(d)) {
toAffect << d;
+ }
+ }
+ }
+ }
if (toAffect.isEmpty())
return;
@@ -134,8 +138,8 @@ void QQuickCustomAffector::affectSystem(qreal dt)
if (justAffected) {
foreach (QQuickParticleData* d, toAffect) {//Not postAffect to avoid saying the particle changed
if (m_onceOff)
- m_onceOffed << qMakePair(d->group, d->index);
- emit affected(d->curX(), d->curY());
+ m_onceOffed << qMakePair(d->groupId, d->index);
+ emit affected(d->curX(m_system), d->curY(m_system));
}
return;
}
@@ -150,7 +154,7 @@ void QQuickCustomAffector::affectSystem(qreal dt)
QV4::ScopedArrayObject array(scope, v4->newArrayObject(toAffect.size()));
QV4::ScopedValue v(scope);
for (int i=0; i<toAffect.size(); i++)
- array->putIndexed(i, (v = toAffect[i]->v4Value()));
+ array->putIndexed(i, (v = toAffect[i]->v4Value(m_system)));
if (dt >= simulationCutoff || dt <= simulationDelta) {
affectProperties(toAffect, dt);
@@ -180,7 +184,7 @@ bool QQuickCustomAffector::affectParticle(QQuickParticleData *d, qreal dt)
{
//This does the property based affecting, called by superclass if signal isn't hooked up.
bool changed = false;
- QPointF curPos(d->curX(), d->curY());
+ QPointF curPos(d->curX(m_system), d->curY(m_system));
if (m_acceleration != &m_nullVector){
QPointF pos = m_acceleration->sample(curPos);
@@ -190,22 +194,22 @@ bool QQuickCustomAffector::affectParticle(QQuickParticleData *d, qreal dt)
pos += curAcc;
}
if (pos != curAcc) {
- d->setInstantaneousAX(pos.x());
- d->setInstantaneousAY(pos.y());
+ d->setInstantaneousAX(pos.x(), m_system);
+ d->setInstantaneousAY(pos.y(), m_system);
changed = true;
}
}
if (m_velocity != &m_nullVector){
QPointF pos = m_velocity->sample(curPos);
- QPointF curVel = QPointF(d->curVX(), d->curVY());
+ QPointF curVel = QPointF(d->curVX(m_system), d->curVY(m_system));
if (m_relative) {
pos *= dt;
pos += curVel;
}
if (pos != curVel) {
- d->setInstantaneousVX(pos.x());
- d->setInstantaneousVY(pos.y());
+ d->setInstantaneousVX(pos.x(), m_system);
+ d->setInstantaneousVY(pos.y(), m_system);
changed = true;
}
}
@@ -217,8 +221,8 @@ bool QQuickCustomAffector::affectParticle(QQuickParticleData *d, qreal dt)
pos += curPos;
}
if (pos != curPos) {
- d->setInstantaneousX(pos.x());
- d->setInstantaneousY(pos.y());
+ d->setInstantaneousX(pos.x(), m_system);
+ d->setInstantaneousY(pos.y(), m_system);
changed = true;
}
}