From 3f36cc94e45d32dc4784c16ec91b6fc44dbf0ff7 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Tue, 23 Dec 2014 00:02:30 +0200 Subject: ZVISION: Limit the default engine delay for all animations This fixes the lag between frames for all in-game animations with a default frame delay --- engines/zvision/scripting/sidefx/animation_node.cpp | 18 +++++------------- engines/zvision/scripting/sidefx/animation_node.h | 1 - 2 files changed, 5 insertions(+), 14 deletions(-) (limited to 'engines/zvision/scripting/sidefx') diff --git a/engines/zvision/scripting/sidefx/animation_node.cpp b/engines/zvision/scripting/sidefx/animation_node.cpp index 3a21227d1a..56f1fa3e49 100644 --- a/engines/zvision/scripting/sidefx/animation_node.cpp +++ b/engines/zvision/scripting/sidefx/animation_node.cpp @@ -42,6 +42,11 @@ AnimationNode::AnimationNode(ZVision *engine, uint32 controlKey, const Common::S _animation = engine->loadAnimation(fileName); _frmDelay = 1000.0 / _animation->getDuration().framerate(); + // WORKAROUND: We do not allow the engine to delay more than 66 msec + // per frame (15fps max) + if (_frmDelay > 66) + _frmDelay = 66; + if (frate > 0) _frmDelay = 1000.0 / frate; } @@ -190,19 +195,6 @@ bool AnimationNode::stop() { return false; } -void AnimationNode::setNewFrameDelay(int32 newDelay) { - if (newDelay > 0) { - PlayNodes::iterator it = _playList.begin(); - if (it != _playList.end()) { - playnode *nod = &(*it); - float percent = (float)nod->_delay / (float)_frmDelay; - nod->_delay = percent * newDelay; // Scale to new max - } - - _frmDelay = newDelay; - } -} - int32 AnimationNode::getFrameDelay() { return _frmDelay; } diff --git a/engines/zvision/scripting/sidefx/animation_node.h b/engines/zvision/scripting/sidefx/animation_node.h index 3adfd91f32..74941aa764 100644 --- a/engines/zvision/scripting/sidefx/animation_node.h +++ b/engines/zvision/scripting/sidefx/animation_node.h @@ -73,7 +73,6 @@ public: bool stop(); - void setNewFrameDelay(int32 newDelay); int32 getFrameDelay(); }; -- cgit v1.2.3