12
13
14
15
16
17
18
19
20
21
22
24QQuick3DParticleSpriteSequence::QQuick3DParticleSpriteSequence(QObject *parent)
30QQuick3DParticleSpriteSequence::~QQuick3DParticleSpriteSequence()
33 m_parentParticle->setSpriteSequence(
nullptr);
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52int QQuick3DParticleSpriteSequence::frameCount()
const
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73int QQuick3DParticleSpriteSequence::frameIndex()
const
79
80
81
82
83
84
85
86
87
88bool QQuick3DParticleSpriteSequence::interpolate()
const
94
95
96
97
98
99
100
101
102
103int QQuick3DParticleSpriteSequence::duration()
const
109
110
111
112
113
114
115
116
117int QQuick3DParticleSpriteSequence::durationVariation()
const
119 return m_durationVariation;
123
124
125
126
127
128
129
130
131
132bool QQuick3DParticleSpriteSequence::randomStart()
const
134 return m_randomStart;
138
139
140
141
142
143
144
145
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166QQuick3DParticleSpriteSequence::AnimationDirection QQuick3DParticleSpriteSequence::animationDirection()
const
168 return m_animationDirection;
171void QQuick3DParticleSpriteSequence::setFrameCount(
int frameCount)
173 if (m_frameCount == frameCount)
175 m_frameCount = std::max(1, frameCount);
177 Q_EMIT frameCountChanged();
180void QQuick3DParticleSpriteSequence::setFrameIndex(
int frameIndex)
182 if (m_frameIndex == frameIndex)
184 m_frameIndex = std::max(0, frameIndex);
186 Q_EMIT frameIndexChanged();
189void QQuick3DParticleSpriteSequence::setInterpolate(
bool interpolate)
191 if (m_interpolate == interpolate)
193 m_interpolate = interpolate;
195 Q_EMIT interpolateChanged();
198void QQuick3DParticleSpriteSequence::setDuration(
int duration)
200 if (m_duration == duration)
203 m_duration = duration;
205 Q_EMIT durationChanged();
208void QQuick3DParticleSpriteSequence::setDurationVariation(
int durationVariation)
210 if (m_durationVariation == durationVariation)
213 m_durationVariation = durationVariation;
215 Q_EMIT durationVariationChanged();
218void QQuick3DParticleSpriteSequence::setRandomStart(
bool randomStart)
220 if (m_randomStart == randomStart)
222 m_randomStart = randomStart;
224 Q_EMIT randomStartChanged();
227void QQuick3DParticleSpriteSequence::setAnimationDirection(QQuick3DParticleSpriteSequence::AnimationDirection animationDirection)
229 if (m_animationDirection == animationDirection)
231 m_animationDirection = animationDirection;
233 Q_EMIT animationDirectionChanged();
236void QQuick3DParticleSpriteSequence::componentComplete()
238 m_parentParticle = qobject_cast<QQuick3DParticleSpriteParticle *>(parent());
239 if (!m_parentParticle)
240 qWarning() <<
"SpriteSequence3D requires parent SpriteParticle3D to function correctly!";
243void QQuick3DParticleSpriteSequence::markNodesDirty()
245 if (m_parentParticle)
246 m_parentParticle->markNodesDirty();
251float QQuick3DParticleSpriteSequence::firstFrame(
int index,
bool singleFrame)
253 float firstFrame = 0.0f;
255 if (!m_parentParticle || !m_parentParticle->m_system)
257 auto rand = m_parentParticle->m_system->rand();
258 firstFrame = rand->get(index, QPRand::SpriteAnimationI);
259 }
else if (m_frameCount > 1 && m_frameIndex > 0) {
260 int frameIndex = std::min(m_frameIndex, m_frameCount - 1);
262 firstFrame =
float(frameIndex) / (
float(m_frameCount - 1) + 0.0001f);
264 firstFrame =
float(frameIndex) /
float(m_frameCount);
Combined button and popup list for selecting options.