aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/particles/qquickimageparticle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/particles/qquickimageparticle.cpp')
-rw-r--r--src/quick/particles/qquickimageparticle.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/quick/particles/qquickimageparticle.cpp b/src/quick/particles/qquickimageparticle.cpp
index 9d75c4bb22..b8b05f2330 100644
--- a/src/quick/particles/qquickimageparticle.cpp
+++ b/src/quick/particles/qquickimageparticle.cpp
@@ -1475,11 +1475,14 @@ void QQuickImageParticle::spritesUpdate(qreal time)
// This is particularly important for cut-up sprites.
QQuickParticleData* datum = (mainDatum->animationOwner == this ? mainDatum : getShadowDatum(mainDatum));
double frameAt;
- qreal progress;
+ qreal progress = 0;
if (datum->frameDuration > 0) {
qreal frame = (time - datum->animT)/(datum->frameDuration / 1000.0);
frame = qBound((qreal)0.0, frame, (qreal)((qreal)datum->frameCount - 1.0));//Stop at count-1 frames until we have between anim interpolation
- progress = modf(frame,&frameAt);
+ if (m_spritesInterpolate)
+ progress = modf(frame,&frameAt);
+ else
+ modf(frame,&frameAt);
} else {
datum->frameAt++;
if (datum->frameAt >= datum->frameCount){
@@ -1492,7 +1495,6 @@ void QQuickImageParticle::spritesUpdate(qreal time)
}
}
frameAt = datum->frameAt;
- progress = 0;
}
QSizeF sheetSize = getState<ImageMaterialData>(m_material)->animSheetSize;
qreal y = datum->animY / sheetSize.height();
@@ -1544,7 +1546,7 @@ void QQuickImageParticle::spriteAdvance(int spriteIdx)
datum->animIdx = m_spriteEngine->spriteState(spriteIdx);
datum->animT = m_spriteEngine->spriteStart(spriteIdx)/1000.0;
datum->frameCount = m_spriteEngine->spriteFrames(spriteIdx);
- datum->frameDuration = m_spriteEngine->spriteDuration(spriteIdx);
+ datum->frameDuration = m_spriteEngine->spriteDuration(spriteIdx) / datum->frameCount;
datum->animX = m_spriteEngine->spriteX(spriteIdx);
datum->animY = m_spriteEngine->spriteY(spriteIdx);
datum->animWidth = m_spriteEngine->spriteWidth(spriteIdx);
@@ -1586,7 +1588,7 @@ void QQuickImageParticle::initialize(int gIdx, int pIdx)
if (m_spriteEngine){
m_spriteEngine->start(spriteIdx);
writeTo->frameCount = m_spriteEngine->spriteFrames(spriteIdx);
- writeTo->frameDuration = m_spriteEngine->spriteDuration(spriteIdx);
+ writeTo->frameDuration = m_spriteEngine->spriteDuration(spriteIdx) / writeTo->frameCount;
writeTo->animIdx = 0;//Always starts at 0
writeTo->frameAt = -1;
writeTo->animX = m_spriteEngine->spriteX(spriteIdx);