51void QQuickParticlePainter::itemChange(ItemChange change,
const ItemChangeData &data)
53 if (change == QQuickItem::ItemSceneChange) {
55 disconnect(m_window, &QQuickWindow::sceneGraphInvalidated,
56 this, &QQuickParticlePainter::sceneGraphInvalidated);
58 m_window = data.window;
59 m_windowChanged =
true;
61 connect(m_window, &QQuickWindow::sceneGraphInvalidated,
62 this, &QQuickParticlePainter::sceneGraphInvalidated, Qt::DirectConnection);
65 QQuickItem::itemChange(change, data);
112void QQuickParticlePainter::setGroups(
const QStringList &arg)
117 m_groupIdsNeedRecalculation =
true;
120 QMetaObject::invokeMethod(
122 [self = QPointer<QQuickParticlePainter>(
this)]() {
124 self->m_system->loadPainter(self);
126 Qt::QueuedConnection);
129 Q_EMIT groupsChanged(arg);
163void QQuickParticlePainter::calcSystemOffset(
bool resetPending)
165 if (!m_system || !parentItem())
167 QPointF lastOffset = m_systemOffset;
168 m_systemOffset = -1 *
this->mapFromItem(m_system, QPointF(0.0, 0.0));
169 if (lastOffset != m_systemOffset && !resetPending){
171 foreach (
const QString &g, m_groups){
172 int gId = m_system->groupIds[g];
173 foreach (QQuickParticleData* d, m_system->groupData[gId]->data)
179void QQuickParticlePainter::performPendingCommits()
182 foreach (intPair p, m_pendingCommits)
183 commit(p.first, p.second);
184 m_pendingCommits.clear();
std::pair< int, int > intPair