diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-04-23 09:33:25 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-04-23 09:34:29 +0200 |
commit | 580fa7dc88aae23053e44ffa335a15f6af112a20 (patch) | |
tree | 5bc915d7c2e252739122d9441bd0d7fa7175d0c2 /src/particles | |
parent | 6767114285db9d0e16dc278d08f231e8561546b4 (diff) | |
parent | c00283bb3bb966bf60c307ec8283bd98c12318bf (diff) |
Merge remote-tracking branch 'origin/dev' into wip/scenegraphng
Change-Id: Ifec879473540b609403ac951967f6d9ecb0bb6f0
Diffstat (limited to 'src/particles')
-rw-r--r-- | src/particles/qquickcustomaffector.cpp | 23 | ||||
-rw-r--r-- | src/particles/qquickcustomaffector_p.h | 2 | ||||
-rw-r--r-- | src/particles/qquickcustomparticle.cpp | 2 | ||||
-rw-r--r-- | src/particles/qquickparticleemitter.cpp | 7 | ||||
-rw-r--r-- | src/particles/qquickparticleemitter_p.h | 2 | ||||
-rw-r--r-- | src/particles/qquickparticlesystem.cpp | 2 | ||||
-rw-r--r-- | src/particles/qquickparticlesystem_p.h | 3 | ||||
-rw-r--r-- | src/particles/qquicktrailemitter.cpp | 10 | ||||
-rw-r--r-- | src/particles/qquicktrailemitter_p.h | 2 | ||||
-rw-r--r-- | src/particles/qquickv4particledata.cpp | 4 | ||||
-rw-r--r-- | src/particles/qquickv4particledata_p.h | 3 |
11 files changed, 34 insertions, 26 deletions
diff --git a/src/particles/qquickcustomaffector.cpp b/src/particles/qquickcustomaffector.cpp index ccb00eeba2..cadd2992b1 100644 --- a/src/particles/qquickcustomaffector.cpp +++ b/src/particles/qquickcustomaffector.cpp @@ -38,9 +38,9 @@ ****************************************************************************/ #include "qquickcustomaffector_p.h" -#include <private/qv8engine_p.h> #include <private/qqmlengine_p.h> #include <private/qqmlglobal_p.h> +#include <private/qjsvalue_p.h> #include <QQmlEngine> #include <QDebug> QT_BEGIN_NAMESPACE @@ -103,7 +103,7 @@ QQuickCustomAffector::QQuickCustomAffector(QQuickItem *parent) : bool QQuickCustomAffector::isAffectConnected() { - IS_SIGNAL_CONNECTED(this, QQuickCustomAffector, affectParticles, (QQmlV4Handle,qreal)); + IS_SIGNAL_CONNECTED(this, QQuickCustomAffector, affectParticles, (const QJSValue &, qreal)); } void QQuickCustomAffector::affectSystem(qreal dt) @@ -156,23 +156,26 @@ void QQuickCustomAffector::affectSystem(qreal dt) for (int i=0; i<toAffect.size(); i++) array->put(i, (v = toAffect[i]->v4Value(m_system))); - if (dt >= simulationCutoff || dt <= simulationDelta) { + const auto doAffect = [&](qreal dt) { affectProperties(toAffect, dt); - emit affectParticles(QQmlV4Handle(array), dt); + QJSValue particles; + QJSValuePrivate::setValue(&particles, v4, array); + emit affectParticles(particles, dt); + }; + + if (dt >= simulationCutoff || dt <= simulationDelta) { + doAffect(dt); } else { int realTime = m_system->timeInt; m_system->timeInt -= dt * 1000.0; while (dt > simulationDelta) { m_system->timeInt += simulationDelta * 1000.0; dt -= simulationDelta; - affectProperties(toAffect, simulationDelta); - emit affectParticles(QQmlV4Handle(array), simulationDelta); + doAffect(simulationDelta); } m_system->timeInt = realTime; - if (dt > 0.0) { - affectProperties(toAffect, dt); - emit affectParticles(QQmlV4Handle(array), dt); - } + if (dt > 0.0) + doAffect(dt); } foreach (QQuickParticleData* d, toAffect) diff --git a/src/particles/qquickcustomaffector_p.h b/src/particles/qquickcustomaffector_p.h index c1745798c3..10db70d71d 100644 --- a/src/particles/qquickcustomaffector_p.h +++ b/src/particles/qquickcustomaffector_p.h @@ -108,7 +108,7 @@ public: Q_SIGNALS: - void affectParticles(QQmlV4Handle particles, qreal dt); + void affectParticles(const QJSValue &particles, qreal dt); void positionChanged(QQuickDirection * arg); diff --git a/src/particles/qquickcustomparticle.cpp b/src/particles/qquickcustomparticle.cpp index 85056dffa9..91fd63302a 100644 --- a/src/particles/qquickcustomparticle.cpp +++ b/src/particles/qquickcustomparticle.cpp @@ -413,7 +413,7 @@ void QQuickCustomParticle::buildData(QQuickOpenGLShaderEffectNode *rootNode) for (int shaderType = 0; shaderType < Key::ShaderTypeCount; ++shaderType) { for (int i = 0; i < m_common.uniformData[shaderType].size(); ++i) { if (m_common.uniformData[shaderType].at(i).name == "qt_Timestamp") - m_common.uniformData[shaderType][i].value = qVariantFromValue(m_lastTime); + m_common.uniformData[shaderType][i].value = QVariant::fromValue(m_lastTime); } } m_common.updateMaterial(rootNode, static_cast<QQuickOpenGLShaderEffectMaterial *>(rootNode->material()), diff --git a/src/particles/qquickparticleemitter.cpp b/src/particles/qquickparticleemitter.cpp index 5ec834a463..4e36ad149a 100644 --- a/src/particles/qquickparticleemitter.cpp +++ b/src/particles/qquickparticleemitter.cpp @@ -40,6 +40,7 @@ #include "qquickparticleemitter_p.h" #include <private/qqmlengine_p.h> #include <private/qqmlglobal_p.h> +#include <private/qjsvalue_p.h> #include <QRandomGenerator> QT_BEGIN_NAMESPACE @@ -257,7 +258,7 @@ QQuickParticleEmitter::~QQuickParticleEmitter() bool QQuickParticleEmitter::isEmitConnected() { - IS_SIGNAL_CONNECTED(this, QQuickParticleEmitter, emitParticles, (QQmlV4Handle)); + IS_SIGNAL_CONNECTED(this, QQuickParticleEmitter, emitParticles, (const QJSValue &)); } void QQuickParticleEmitter::reclaculateGroupId() const @@ -496,7 +497,9 @@ void QQuickParticleEmitter::emitWindow(int timeStamp) for (int i=0; i<toEmit.size(); i++) array->put(i, (v = toEmit[i]->v4Value(m_system))); - emitParticles(QQmlV4Handle(array));//A chance for arbitrary JS changes + QJSValue particles; + QJSValuePrivate::setValue(&particles, v4, array); + emit emitParticles(particles);//A chance for arbitrary JS changes } m_last_emission = pt; diff --git a/src/particles/qquickparticleemitter_p.h b/src/particles/qquickparticleemitter_p.h index 4f7e12da44..64b9bcef32 100644 --- a/src/particles/qquickparticleemitter_p.h +++ b/src/particles/qquickparticleemitter_p.h @@ -135,7 +135,7 @@ public: void setVelocityFromMovement(qreal s); void componentComplete() override; Q_SIGNALS: - void emitParticles(QQmlV4Handle particles); + void emitParticles(const QJSValue &particles); void particlesPerSecondChanged(qreal); void particleDurationChanged(int); void enabledChanged(bool); diff --git a/src/particles/qquickparticlesystem.cpp b/src/particles/qquickparticlesystem.cpp index 1499df0360..14ffc67324 100644 --- a/src/particles/qquickparticlesystem.cpp +++ b/src/particles/qquickparticlesystem.cpp @@ -523,7 +523,7 @@ void QQuickParticleData::clone(const QQuickParticleData& other) animationOwner = other.animationOwner; } -QQmlV4Handle QQuickParticleData::v4Value(QQuickParticleSystem* particleSystem) +QV4::ReturnedValue QQuickParticleData::v4Value(QQuickParticleSystem* particleSystem) { if (!v8Datum) v8Datum = new QQuickV4ParticleData(qmlEngine(particleSystem)->handle(), this, particleSystem); diff --git a/src/particles/qquickparticlesystem_p.h b/src/particles/qquickparticlesystem_p.h index 73351fb99a..81cdb0e6da 100644 --- a/src/particles/qquickparticlesystem_p.h +++ b/src/particles/qquickparticlesystem_p.h @@ -59,7 +59,6 @@ #include <private/qquicksprite_p.h> #include <QAbstractAnimation> #include <QtQml/qqml.h> -#include <private/qv8engine_p.h> //For QQmlV4Handle #include <private/qv4util_p.h> #include "qtquickparticlesglobal_p.h" @@ -333,7 +332,7 @@ public: float curSize(QQuickParticleSystem *particleSystem) const; void clone(const QQuickParticleData& other);//Not =, leaves meta-data like index - QQmlV4Handle v4Value(QQuickParticleSystem *particleSystem); + QV4::ReturnedValue v4Value(QQuickParticleSystem *particleSystem); void extendLife(float time, QQuickParticleSystem *particleSystem); static inline Q_DECL_CONSTEXPR float EPSILON() Q_DECL_NOTHROW { return 0.001f; } diff --git a/src/particles/qquicktrailemitter.cpp b/src/particles/qquicktrailemitter.cpp index ca3ebbd4ec..102dc7bd2e 100644 --- a/src/particles/qquicktrailemitter.cpp +++ b/src/particles/qquicktrailemitter.cpp @@ -40,6 +40,7 @@ #include "qquicktrailemitter_p.h" #include <private/qqmlengine_p.h> #include <private/qqmlglobal_p.h> +#include <private/qjsvalue_p.h> #include <QRandomGenerator> #include <cmath> QT_BEGIN_NAMESPACE @@ -127,7 +128,8 @@ QQuickTrailEmitter::QQuickTrailEmitter(QQuickItem *parent) : bool QQuickTrailEmitter::isEmitFollowConnected() { - IS_SIGNAL_CONNECTED(this, QQuickTrailEmitter, emitFollowParticles, (QQmlV4Handle,QQmlV4Handle)); + IS_SIGNAL_CONNECTED(this, QQuickTrailEmitter, emitFollowParticles, + (const QJSValue &, const QJSValue &)); } void QQuickTrailEmitter::recalcParticlesPerSecond(){ @@ -275,10 +277,12 @@ void QQuickTrailEmitter::emitWindow(int timeStamp) for (int i=0; i<toEmit.size(); i++) array->put(i, (v = toEmit[i]->v4Value(m_system))); + QJSValue particles; + QJSValuePrivate::setValue(&particles, v4, array); if (isEmitFollowConnected()) - emitFollowParticles(QQmlV4Handle(array), d->v4Value(m_system));//A chance for many arbitrary JS changes + emit emitFollowParticles(particles, QJSValue(v4, d->v4Value(m_system)));//A chance for many arbitrary JS changes else if (isEmitConnected()) - emitParticles(QQmlV4Handle(array));//A chance for arbitrary JS changes + emit emitParticles(particles);//A chance for arbitrary JS changes } m_lastEmission[d->index] = pt; } diff --git a/src/particles/qquicktrailemitter_p.h b/src/particles/qquicktrailemitter_p.h index 99464436ba..22b96afd25 100644 --- a/src/particles/qquicktrailemitter_p.h +++ b/src/particles/qquicktrailemitter_p.h @@ -100,7 +100,7 @@ public: } Q_SIGNALS: - void emitFollowParticles(QQmlV4Handle particles, QQmlV4Handle followed); + void emitFollowParticles(const QJSValue &particles, const QJSValue &followed); void particlesPerParticlePerSecondChanged(int arg); diff --git a/src/particles/qquickv4particledata.cpp b/src/particles/qquickv4particledata.cpp index 42b30f0472..383444a808 100644 --- a/src/particles/qquickv4particledata.cpp +++ b/src/particles/qquickv4particledata.cpp @@ -528,9 +528,9 @@ QQuickV4ParticleData::~QQuickV4ParticleData() { } -QQmlV4Handle QQuickV4ParticleData::v4Value() const +QV4::ReturnedValue QQuickV4ParticleData::v4Value() const { - return QQmlV4Handle(m_v4Value.value()); + return m_v4Value.value(); } QT_END_NAMESPACE diff --git a/src/particles/qquickv4particledata_p.h b/src/particles/qquickv4particledata_p.h index 3d682ab297..e41700f7c2 100644 --- a/src/particles/qquickv4particledata_p.h +++ b/src/particles/qquickv4particledata_p.h @@ -51,7 +51,6 @@ // We mean it. // -#include <private/qv8engine_p.h> #include <private/qv4persistent_p.h> #include <private/qv4value_p.h> @@ -63,7 +62,7 @@ class QQuickV4ParticleData { public: QQuickV4ParticleData(QV4::ExecutionEngine*, QQuickParticleData*, QQuickParticleSystem *system); ~QQuickV4ParticleData(); - QQmlV4Handle v4Value() const; + QV4::ReturnedValue v4Value() const; private: QV4::PersistentValue m_v4Value; }; |