diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2011-09-06 10:40:21 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-09-08 08:16:48 +0200 |
commit | 1aa012a1c83ce8905e5440d3e7ae11192dc73878 (patch) | |
tree | 813b36a8637c21e9f33c858daed24b57e2b2115e /src/declarative/particles/qsgcustomaffector.cpp | |
parent | 63982ebb2cd0aa28c456e25cc9edb400b5b881d9 (diff) |
Particles module refactoring en masse
All the little changes in one commit.
StochasticDirection -> Direction
AngledDirection -> AngleDirection
TargetedDirection -> TargetDirection
QSGCustomParticle is now Affector's implementation (C++ only refactor)
FollowEmitter -> TrailEmitter
Kill -> Age and gained lifeLeft property
ModelParticle is removed, use ItemParticle instead.
Added RectangleShape to replace Shape for the case of Rectangles
Abstract Types are no longer createable, despite sensible defaults.
GLSL variables in CustomParticle now begin with qt_
JS variables are now such that x,vx,ax are current (old ones are now
initialX, initialVX, initialAX). Same for y. A few more were extended.
Emitter::emitCap -> Emitter::maximumEmitted. Set to -1 for noCap: false
Emitter::noCap is gone.
Emitter::emitting -> Emitter::enabled
Affector::active -> Affector::enabled
Affector::collisionParticles -> Affector::whenCollidingWith
Affector::signal is gone.
PointAttractor -> Attractor
Attractor/Wander::physics -> ::affectedParameter
ParticleSystem::fastForward is gone
ParticleSystem::startTime is gone (use Emitter::startTime)
ParticleSystem::clear -> ParticleSystem::empty
And various Doc fixes.
Change-Id: Ia3b02b987f692e6f1bd14c42e575381bdfb7bbb5
Reviewed-on: http://codereview.qt-project.org/4231
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'src/declarative/particles/qsgcustomaffector.cpp')
-rw-r--r-- | src/declarative/particles/qsgcustomaffector.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/declarative/particles/qsgcustomaffector.cpp b/src/declarative/particles/qsgcustomaffector.cpp new file mode 100644 index 0000000000..70e1dbe035 --- /dev/null +++ b/src/declarative/particles/qsgcustomaffector.cpp @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Declarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qsgcustomaffector_p.h" +#include <QDebug> +QT_BEGIN_NAMESPACE + +//TODO: Move docs (and inherit) to real base when docs can propagate +//TODO: Document particle 'type' +/*! + \qmlsignal QtQuick.Particles2::Affector::affectParticle(particle, dt) + + This handler is called when particles are selected to be affected. + + dt is the time since the last time it was affected. Use dt to normalize + trajectory manipulations to real time. + + Note that JS is slower to execute, so it is not recommended to use this in + high-volume particle systems. +*/ +QSGCustomAffector::QSGCustomAffector(QSGItem *parent) : + QSGParticleAffector(parent) +{ +} + +bool QSGCustomAffector::isAffectConnected() +{ + static int idx = QObjectPrivate::get(this)->signalIndex("affectParticle(QDeclarativeV8Handle,qreal)"); + return QObjectPrivate::get(this)->isSignalConnected(idx); +} + +bool QSGCustomAffector::affectParticle(QSGParticleData *d, qreal dt) +{ + if (isAffectConnected()){ + d->update = 0.0; + emit affectParticle(d->v8Value(), dt); + return d->update == 1.0; + } + return true; +} + +QT_END_NAMESPACE |