aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/particles/qsgparticleemitter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/particles/qsgparticleemitter.cpp')
-rw-r--r--src/declarative/particles/qsgparticleemitter.cpp17
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()){