From 490dcdfd2b8d4cd3af828bab155a615da69b3c3a Mon Sep 17 00:00:00 2001 From: Mike Thomas Date: Thu, 4 Mar 2010 01:39:36 +0000 Subject: [PATCH] This was a tad broken - if an animation happened to paint before it ticked, it'd try to paint tile -1 which obviously didn't exist. This change may break any custom sequencers anyone has but seems necessary... git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@899 ed5b42cb-e716-0410-a449-f6a68f950b19 --- .../media/animation/AnimationFrameSequencer.java | 4 +++- .../threerings/media/animation/MultiFrameAnimation.java | 2 +- src/java/com/threerings/media/util/FrameSequencer.java | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/java/com/threerings/media/animation/AnimationFrameSequencer.java b/src/java/com/threerings/media/animation/AnimationFrameSequencer.java index e0988caa..6017c3ab 100644 --- a/src/java/com/threerings/media/animation/AnimationFrameSequencer.java +++ b/src/java/com/threerings/media/animation/AnimationFrameSequencer.java @@ -118,7 +118,7 @@ public interface AnimationFrameSequencer extends FrameSequencer } // documentation inherited from interface - public void init (MultiFrameImage source) + public int init (MultiFrameImage source) { int framecount = source.getFrameCount(); // let's make sure our frames are valid @@ -135,6 +135,8 @@ public interface AnimationFrameSequencer extends FrameSequencer _lastStamp = 0L; _curIdx = 0; } + + return _sequence[_curIdx]; } // documentation inherited from interface diff --git a/src/java/com/threerings/media/animation/MultiFrameAnimation.java b/src/java/com/threerings/media/animation/MultiFrameAnimation.java index 45cd26d9..aa7690bd 100644 --- a/src/java/com/threerings/media/animation/MultiFrameAnimation.java +++ b/src/java/com/threerings/media/animation/MultiFrameAnimation.java @@ -81,7 +81,7 @@ public class MultiFrameAnimation extends Animation _fidx = -1; // reset our frame sequencer - _seeker.init(_frames); + setFrameIndex(_seeker.init(_frames)); if (_seeker instanceof AnimationFrameSequencer) { ((AnimationFrameSequencer) _seeker).setAnimation(this); } diff --git a/src/java/com/threerings/media/util/FrameSequencer.java b/src/java/com/threerings/media/util/FrameSequencer.java index 31ed0240..ee6fbe96 100644 --- a/src/java/com/threerings/media/util/FrameSequencer.java +++ b/src/java/com/threerings/media/util/FrameSequencer.java @@ -35,8 +35,9 @@ public interface FrameSequencer * * @param source the multie-frame image that is providing the * animation frames. + * @return initial frame index */ - public void init (MultiFrameImage source); + public int init (MultiFrameImage source); /** * Called every display frame, the frame sequencer should return the @@ -76,10 +77,12 @@ public interface FrameSequencer } // documentation inherited from interface - public void init (MultiFrameImage source) + public int init (MultiFrameImage source) { _frameCount = source.getFrameCount(); _startStamp = 0l; + + return 0; } // documentation inherited from interface