From 2b92c8c08f0e17b73bf3a00f416c679ecbf3fca5 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Wed, 27 Apr 2011 11:19:24 +1000 Subject: [PATCH] Update particles to use QElapsedTimer Step one of fixing the limited lifetime bug. As this step should also increase the lifetime 'a lot' step two may take a while. Change-Id: I87bbe762803451f751e23d4bf8559c662fdf57a3 (cherry picked from commit 9cf15c135373f8190bf2cb62f9f99890cacf7d88) --- src/imports/particles/coloredparticle.cpp | 2 +- src/imports/particles/deformableparticle.cpp | 2 +- src/imports/particles/modelparticle.cpp | 2 +- src/imports/particles/particlesystem.cpp | 2 +- src/imports/particles/particlesystem.h | 10 +++++----- src/imports/particles/spriteparticle.cpp | 2 +- src/imports/particles/spriteparticle.h | 1 - 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/imports/particles/coloredparticle.cpp b/src/imports/particles/coloredparticle.cpp index 7d0ec4c..449c6b2 100644 --- a/src/imports/particles/coloredparticle.cpp +++ b/src/imports/particles/coloredparticle.cpp @@ -466,7 +466,7 @@ void ColoredParticle::prepareNextFrame() if(m_node == 0) return; } - uint timeStamp = m_system->systemSync(this); + qint64 timeStamp = m_system->systemSync(this); qreal time = timeStamp / 1000.; m_material->timestamp = time; diff --git a/src/imports/particles/deformableparticle.cpp b/src/imports/particles/deformableparticle.cpp index 69de693..176ef2b 100644 --- a/src/imports/particles/deformableparticle.cpp +++ b/src/imports/particles/deformableparticle.cpp @@ -364,7 +364,7 @@ void DeformableParticle::prepareNextFrame() if(m_node == 0) return; } - uint timeStamp = m_system->systemSync(this); + qint64 timeStamp = m_system->systemSync(this); qreal time = timeStamp / 1000.; m_material->timestamp = time; diff --git a/src/imports/particles/modelparticle.cpp b/src/imports/particles/modelparticle.cpp index d1034a4..0d9b5dd 100644 --- a/src/imports/particles/modelparticle.cpp +++ b/src/imports/particles/modelparticle.cpp @@ -230,7 +230,7 @@ QSGNode* ModelParticle::updatePaintNode(QSGNode* n, UpdatePaintNodeData* d) void ModelParticle::prepareNextFrame() { - uint timeStamp = m_system->systemSync(this); + qint64 timeStamp = m_system->systemSync(this); qreal curT = timeStamp/1000.0; qreal dt = curT - m_lastT; m_lastT = curT; diff --git a/src/imports/particles/particlesystem.cpp b/src/imports/particles/particlesystem.cpp index 1cb7d11..571d33c 100644 --- a/src/imports/particles/particlesystem.cpp +++ b/src/imports/particles/particlesystem.cpp @@ -252,7 +252,7 @@ void ParticleSystem::emitParticle(ParticleData* pd) -uint ParticleSystem::systemSync(ParticleType* p) +qint64 ParticleSystem::systemSync(ParticleType* p) { if (!m_running) return 0; diff --git a/src/imports/particles/particlesystem.h b/src/imports/particles/particlesystem.h index 36ac8ed..896f215 100644 --- a/src/imports/particles/particlesystem.h +++ b/src/imports/particles/particlesystem.h @@ -43,7 +43,7 @@ #define PARTICLESYSTEM_H #include -#include +#include #include #include #include @@ -126,13 +126,13 @@ private slots: public://but only really for related class usage. Perhaps we should all be friends? void emitParticle(ParticleData* p); ParticleData* newDatum(int groupId); - uint systemSync(ParticleType* p); - QTime m_timestamp; + qint64 systemSync(ParticleType* p); + QElapsedTimer m_timestamp; QVector m_data; QSet m_needsReset; QHash m_groupIds; QHash m_groupData;//id, size, start - uint m_timeInt; + qint64 m_timeInt; bool m_initialized; void registerParticleType(ParticleType* p); @@ -151,7 +151,7 @@ private: QList > m_affectors; QList > m_particles; QList > m_syncList; - int m_startTime; + qint64 m_startTime; int m_nextGroupId; bool m_overwrite; }; diff --git a/src/imports/particles/spriteparticle.cpp b/src/imports/particles/spriteparticle.cpp index dcd8f4a..84f2db0 100644 --- a/src/imports/particles/spriteparticle.cpp +++ b/src/imports/particles/spriteparticle.cpp @@ -419,7 +419,7 @@ void SpriteParticle::prepareNextFrame() if(m_node == 0) return; } - uint timeStamp = m_system->systemSync(this); + qint64 timeStamp = m_system->systemSync(this); qreal time = timeStamp / 1000.; diff --git a/src/imports/particles/spriteparticle.h b/src/imports/particles/spriteparticle.h index ed861f5..f28d198 100644 --- a/src/imports/particles/spriteparticle.h +++ b/src/imports/particles/spriteparticle.h @@ -85,7 +85,6 @@ private: int m_particle_duration; int m_last_particle; - QTime m_timestamp; QList m_sprites; SpriteEngine* m_spriteEngine; -- 1.7.2.5