package org.newdawn.slick.tests; import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.BasicGame; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.svg.Diagram; import org.newdawn.slick.svg.InkscapeLoader; import org.newdawn.slick.svg.SVGMorph; import org.newdawn.slick.svg.SimpleDiagramRenderer; /** * A test to try shape morphing * * @author Kevin Glass */ public class MorphSVGTest extends BasicGame { /** The morphing SVG */ private SVGMorph morph; /** First shape of the morph */ private Diagram base; /** The time index of the morph being display */ private float time; /** The current x position */ private float x = -300; /** * Create a simple test */ public MorphSVGTest() { super("MorphShapeTest"); } /** * @see BasicGame#init(GameContainer) */ public void init(GameContainer container) throws SlickException { base = InkscapeLoader.load("testdata/svg/walk1.svg"); morph = new SVGMorph(base); morph.addStep(InkscapeLoader.load("testdata/svg/walk2.svg")); morph.addStep(InkscapeLoader.load("testdata/svg/walk3.svg")); morph.addStep(InkscapeLoader.load("testdata/svg/walk4.svg")); container.setVSync(true); } /** * @see BasicGame#update(GameContainer, int) */ public void update(GameContainer container, int delta) throws SlickException { morph.updateMorphTime(delta * 0.003f); x += delta * 0.2f; if (x > 550) { x = -450; } } /** * @see org.newdawn.slick.Game#render(GameContainer, Graphics) */ public void render(GameContainer container, Graphics g) throws SlickException { g.translate(x, 0); SimpleDiagramRenderer.render(g, morph); } /** * Entry point to our test * * @param argv * The arguments passed to the test */ public static void main(String[] argv) { try { AppGameContainer container = new AppGameContainer( new MorphSVGTest()); container.setDisplayMode(800, 600, false); container.start(); } catch (SlickException e) { e.printStackTrace(); } } }