blob: 2370ebefa764432a4cbe34919ed4a9172dfa77be (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#ifndef WANDERAFFECTOR_H
#define WANDERAFFECTOR_H
#include <QHash>
#include "particleaffector.h"
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class SpriteEmitter;
struct WanderData{
qreal x_vel;
qreal y_vel;
qreal x_peak;
qreal x_var;
qreal y_peak;
qreal y_var;
};
class WanderAffector : public ParticleAffector
{
Q_OBJECT
Q_PROPERTY(qreal xVariance READ xVariance WRITE setXVariance NOTIFY xVarianceChanged)
Q_PROPERTY(qreal yVariance READ yVariance WRITE setYVariance NOTIFY yVarianceChanged)
Q_PROPERTY(qreal pace READ pace WRITE setPace NOTIFY paceChanged)
public:
explicit WanderAffector(QSGItem *parent = 0);
~WanderAffector();
virtual void reset(int systemIdx);
qreal xVariance() const
{
return m_xVariance;
}
qreal yVariance() const
{
return m_yVariance;
}
qreal pace() const
{
return m_pace;
}
protected:
virtual bool affectParticle(ParticleData *d, qreal dt);
signals:
void xVarianceChanged(qreal arg);
void yVarianceChanged(qreal arg);
void paceChanged(qreal arg);
public slots:
void setXVariance(qreal arg)
{
if (m_xVariance != arg) {
m_xVariance = arg;
emit xVarianceChanged(arg);
}
}
void setYVariance(qreal arg)
{
if (m_yVariance != arg) {
m_yVariance = arg;
emit yVarianceChanged(arg);
}
}
void setPace(qreal arg)
{
if (m_pace != arg) {
m_pace = arg;
emit paceChanged(arg);
}
}
private:
WanderData* getData(int idx);
QHash<int, WanderData*> m_wanderData;
qreal m_xVariance;
qreal m_yVariance;
qreal m_pace;
};
QT_END_NAMESPACE
QT_END_HEADER
#endif // WANDERAFFECTOR_H
|