diff options
Diffstat (limited to 'src/declarative/particles/qsgparticleemitter.cpp')
-rw-r--r-- | src/declarative/particles/qsgparticleemitter.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/declarative/particles/qsgparticleemitter.cpp b/src/declarative/particles/qsgparticleemitter.cpp index 0daf274323..6155fd5009 100644 --- a/src/declarative/particles/qsgparticleemitter.cpp +++ b/src/declarative/particles/qsgparticleemitter.cpp @@ -43,7 +43,6 @@ QT_BEGIN_NAMESPACE - /*! \qmlclass Emitter QSGParticleEmitter \inqmlmodule QtQuick.Particles 2 @@ -180,6 +179,14 @@ QT_BEGIN_NAMESPACE Default value is 0. */ +//TODO: Document particle 'type' +/*! + \qmlsignal QtQuick.Particles2::Emitter::emitting(particle) + + This handler is called when a particle is emitted. You can modify particle + attributes from within the handler. +*/ + QSGParticleEmitter::QSGParticleEmitter(QSGItem *parent) : QSGItem(parent) @@ -221,6 +228,12 @@ QSGParticleEmitter::~QSGParticleEmitter() delete m_defaultExtruder; } +bool QSGParticleEmitter::isEmitConnected() +{ + static int idx = QObjectPrivate::get(this)->signalIndex("emitParticle(QDeclarativeV8Handle)"); + return QObjectPrivate::get(this)->isSignalConnected(idx); +} + void QSGParticleEmitter::componentComplete() { if (!m_system && qobject_cast<QSGParticleSystem*>(parentItem())) @@ -416,6 +429,8 @@ void QSGParticleEmitter::emitWindow(int timeStamp) datum->size = size;// * float(m_emitting); datum->endSize = endSize;// * float(m_emitting); + if (isEmitConnected()) + emitParticle(datum->v8Value());//A chance for arbitrary JS changes m_system->emitParticle(datum); } if (m_burstQueue.isEmpty()){ |