1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef GRAVITYAFFECTOR_H
5#define GRAVITYAFFECTOR_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17#include "qquickparticleaffector_p.h"
18#include <QtQml/qqml.h>
19
20QT_BEGIN_NAMESPACE
21
22class Q_QUICKPARTICLES_PRIVATE_EXPORT QQuickGravityAffector : public QQuickParticleAffector
23{
24 Q_OBJECT
25 Q_PROPERTY(qreal magnitude READ magnitude WRITE setMagnitude NOTIFY magnitudeChanged FINAL)
26 Q_PROPERTY(qreal acceleration READ magnitude WRITE setAcceleration NOTIFY magnitudeChanged FINAL)
27 Q_PROPERTY(qreal angle READ angle WRITE setAngle NOTIFY angleChanged FINAL)
28 QML_NAMED_ELEMENT(Gravity)
29 QML_ADDED_IN_VERSION(2, 0)
30public:
31 explicit QQuickGravityAffector(QQuickItem *parent = nullptr);
32 qreal magnitude() const;
33 qreal angle() const;
34
35protected:
36 bool affectParticle(QQuickParticleData *d, qreal dt) override;
37
38Q_SIGNALS:
39 void magnitudeChanged(qreal arg);
40 void angleChanged(qreal arg);
41
42public Q_SLOTS:
43 void setMagnitude(qreal arg);
44 void setAcceleration(qreal arg);
45 void setAngle(qreal arg);
46
47private:
48 qreal m_magnitude;
49 qreal m_angle;
50
51 bool m_needRecalc;
52 qreal m_dx;
53 qreal m_dy;
54};
55
56QT_END_NAMESPACE
57#endif // GRAVITYAFFECTOR_H
58

source code of qtdeclarative/src/particles/qquickgravity_p.h