From 5ac0640cbec29b4a4979360ddfe6e7e3c416de96 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Sun, 27 Mar 2016 16:33:53 -0700 Subject: [PATCH] check for time machine --- libraries/entities/src/ParticleEffectEntityItem.cpp | 6 ++++++ libraries/script-engine/src/ScriptEngine.cpp | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index 4b798cbcd9..02a86ab952 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -561,6 +561,12 @@ bool ParticleEffectEntityItem::needsToCallUpdate() const { void ParticleEffectEntityItem::update(const quint64& now) { + // we check for 'now' in the past in case users set their clock backward + if (now < _lastSimulated) { + _lastSimulated = now; + return; + } + float deltaTime = (float)(now - _lastSimulated) / (float)USECS_PER_SECOND; _lastSimulated = now; diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 3f403b3677..a6541dc031 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -673,11 +673,14 @@ void ScriptEngine::run() { } qint64 now = usecTimestampNow(); - float deltaTime = (float) (now - lastUpdate) / (float) USECS_PER_SECOND; - if (!_isFinished) { - if (_wantSignals) { - emit update(deltaTime); + // we check for 'now' in the past in case people set their clock back + if (lastUpdate < now) { + float deltaTime = (float) (now - lastUpdate) / (float) USECS_PER_SECOND; + if (!_isFinished) { + if (_wantSignals) { + emit update(deltaTime); + } } } lastUpdate = now;