package org.newdawn.slick.tests; import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.BasicGame; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.geom.MorphShape; import org.newdawn.slick.geom.Rectangle; import org.newdawn.slick.geom.Shape; import org.newdawn.slick.geom.Transform; /** * A test to try shape morphing * * @author Kevin Glass */ public class MorphShapeTest extends BasicGame { /** First shape of the morph */ private Shape a; /** Second shape of the morph */ private Shape b; /** Third shape of the morph */ private Shape c; /** The morphing shape */ private MorphShape morph; /** The current morph time */ private float time; /** * Create a simple test */ public MorphShapeTest() { super("MorphShapeTest"); } /** * @see BasicGame#init(GameContainer) */ public void init(GameContainer container) throws SlickException { a = new Rectangle(100,100,50,200); a = a.transform(Transform.createRotateTransform(0.1f,100,100)); b = new Rectangle(200,100,50,200); b = b.transform(Transform.createRotateTransform(-0.6f,100,100)); c = new Rectangle(300,100,50,200); c = c.transform(Transform.createRotateTransform(-0.2f,100,100)); morph = new MorphShape(a); morph.addShape(b); morph.addShape(c); container.setVSync(true); } /** * @see BasicGame#update(GameContainer, int) */ public void update(GameContainer container, int delta) throws SlickException { time += delta * 0.001f; morph.setMorphTime(time); } /** * @see org.newdawn.slick.Game#render(GameContainer, Graphics) */ public void render(GameContainer container, Graphics g) throws SlickException { g.setColor(Color.green); g.draw(a); g.setColor(Color.red); g.draw(b); g.setColor(Color.blue); g.draw(c); g.setColor(Color.white); g.draw(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 MorphShapeTest()); container.setDisplayMode(800, 600, false); container.start(); } catch (SlickException e) { e.printStackTrace(); } } }