From a0762f36d6cf82edfe7c207d482ec7f4501df973 Mon Sep 17 00:00:00 2001 From: Dave Hoover Date: Mon, 8 Feb 2010 23:43:46 +0000 Subject: [PATCH] Let us use a Sprite + Path as an animation git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@878 ed5b42cb-e716-0410-a449-f6a68f950b19 --- .../media/animation/SpritePathAnimation.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/java/com/threerings/media/animation/SpritePathAnimation.java diff --git a/src/java/com/threerings/media/animation/SpritePathAnimation.java b/src/java/com/threerings/media/animation/SpritePathAnimation.java new file mode 100644 index 00000000..9b62dc32 --- /dev/null +++ b/src/java/com/threerings/media/animation/SpritePathAnimation.java @@ -0,0 +1,51 @@ +package com.threerings.media.animation; + +import java.awt.Graphics2D; +import java.awt.Rectangle; + +import com.threerings.media.sprite.PathObserver; +import com.threerings.media.sprite.Sprite; +import com.threerings.media.util.Path; + +/** + * Wraps the dirty work of moving a sprite along a {@link Path} in an Animation. + */ +public class SpritePathAnimation extends Animation + implements PathObserver +{ + public SpritePathAnimation (Sprite sprite, Path path) + { + super(new Rectangle(0, 0, 0, 0)); // We don't render ourselves + _sprite = sprite; + _path = path; + } + + @Override + public void paint (Graphics2D gfx) { } + + @Override + public void tick (long tickStamp) { } + + public void pathCancelled (Sprite sprite, Path path) + { + _finished = true; + sprite.removeSpriteObserver(this); + } + + public void pathCompleted (Sprite sprite, Path path, long when) + { + _finished = true; + sprite.removeSpriteObserver(this); + } + + @Override + protected void willStart (long tickStamp) + { + super.willStart(tickStamp); + _sprite.addSpriteObserver(this); + _sprite.move(_path); + } + + final protected Sprite _sprite; + final protected Path _path; +}