Skip to content
Permalink
Browse files

ZVISION: Further cleanup to the AnimationNode class

  • Loading branch information
bluegr committed Dec 30, 2014
1 parent 47b90ef commit 0c4e0673c3a7d17aef7c586251c3990104163bc3
@@ -33,14 +33,13 @@

namespace ZVision {

AnimationNode::AnimationNode(ZVision *engine, uint32 controlKey, const Common::String &fileName, int32 mask, int32 frate, bool DisposeAfterUse)
AnimationNode::AnimationNode(ZVision *engine, uint32 controlKey, const Common::String &fileName, int32 mask, int32 frate, bool disposeAfterUse)
: SideFX(engine, controlKey, SIDEFX_ANIM),
_DisposeAfterUse(DisposeAfterUse),
_disposeAfterUse(disposeAfterUse),
_mask(mask),
_animation(NULL) {

_animation = engine->loadAnimation(fileName);
_animation->start();

if (frate > 0) {
_frmDelayOverride = (int32)(1000.0 / frate);
@@ -89,12 +88,10 @@ bool AnimationNode::process(uint32 deltaTimeInMillis) {
if (it != _playList.end()) {
playnode *nod = &(*it);

if (nod->_curFrame == -1) {
if (!_animation->isPlaying()) {
// The node is just beginning playback
nod->_curFrame = nod->start;

_animation->start();
_animation->seekToFrame(nod->start);
_animation->setEndFrame(nod->stop);

nod->_delay = deltaTimeInMillis; // Force the frame to draw
if (nod->slot)
@@ -111,10 +108,9 @@ bool AnimationNode::process(uint32 deltaTimeInMillis) {
delete nod->_scaled;
}
_playList.erase(it);
return _DisposeAfterUse;
return _disposeAfterUse;
}

nod->_curFrame = nod->start;
_animation->seekToFrame(nod->start);
}

@@ -190,13 +186,9 @@ void AnimationNode::addPlayNode(int32 slot, int x, int y, int x2, int y2, int st
nod.loop = loops;
nod.pos = Common::Rect(x, y, x2 + 1, y2 + 1);
nod.start = startFrame;
nod.stop = endFrame;

if (nod.stop >= (int)_animation->getFrameCount())
nod.stop = _animation->getFrameCount() - 1;
_animation->setEndFrame(CLIP<int>(endFrame, 0,_animation->getFrameCount() - 1));

nod.slot = slot;
nod._curFrame = -1;
nod._delay = 0;
nod._scaled = NULL;
_playList.push_back(nod);
@@ -41,16 +41,14 @@ class ZVision;

class AnimationNode : public SideFX {
public:
AnimationNode(ZVision *engine, uint32 controlKey, const Common::String &fileName, int32 mask, int32 frate, bool DisposeAfterUse = true);
AnimationNode(ZVision *engine, uint32 controlKey, const Common::String &fileName, int32 mask, int32 frate, bool disposeAfterUse = true);
~AnimationNode();

struct playnode {
Common::Rect pos;
int32 slot;
int32 start;
int32 stop;
int32 loop;
int32 _curFrame;
int32 _delay;
Graphics::Surface *_scaled;
};
@@ -61,7 +59,7 @@ class AnimationNode : public SideFX {
PlayNodes _playList;

int32 _mask;
bool _DisposeAfterUse;
bool _disposeAfterUse;

Video::VideoDecoder *_animation;
int32 _frmDelayOverride;

1 comment on commit 0c4e067

@Marisa-Chan

This comment has been minimized.

Copy link
Contributor

@Marisa-Chan Marisa-Chan commented on 0c4e067 Dec 30, 2014

It's bad to delete stop of playnode because if you add more than one item to playlist each of them will call setEndFrame immediately

Please sign in to comment.
You can’t perform that action at this time.