package actor;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;
import render.Material;
import render.RenderApplet;
import render.RenderableContext;
public class PollyTrack extends RenderApplet implements RenderableContext
{
Polly polly, polly2;
Material clearPlastic =
new Material().setDiffuse(1, 1, 1).setTransparency(.5).setDoubleSided(
true);
public PollyTrack()
{
super();
addKeyListener(pollyBehaviorDemoKeyListener);
addMouseListener(pollyBehaviorDemoMouseListener);
addMouseMotionListener(pollyBehaviorDemoMouseListener);
}
public void initialize()
{
addLight(1, 1, 1, 1, 1, 1);
addLight(0, -1, 0, 1, 1, 1);
setBgColor(.2, .2, .8);
setFL(6);
renderer.setCamera(9 * Math.PI / 8, Math.PI / 6);
world.add().setMaterial(clearPlastic);
world.child[0].disk(50);
push();
scale(3.5, 1.0, 3.5);
rotateX(Math.PI / 2);
transform(world.child[0]);
pop();
polly2 = new Polly();
polly2.setColor(0.1, 0.9, 0.1);
polly2.setSize(new Point3D(0.7, 0.7, 0.7));
world.add(polly2.getGeometry());
TravelBehavior tb = new TravelBehavior();
polly2.addBehavior(tb);
polly2.setDirection(new Point3D(0.0, 0.0, -1.0));
polly2.setAnimation("hotfeet");
polly = new Polly();
polly.setSize(new Point3D(0.7, 0.7, 0.7));
world.add(polly.getGeometry());
SpiralActorBehavior sab = new SpiralActorBehavior(polly2, 2.5, 1.0);
polly.addBehavior(sab);
polly.setPosition(
Point3D.add(new Point3D(polly2.getPosition()), new Point3D(-3.0, 0.0, 0.0)));
polly.setAnimation("sprint");
}
public void animate(double time)
{
polly.update(WorldState.getInstance(this));
polly2.update(WorldState.getInstance(this));
}
public KeyListener pollyBehaviorDemoKeyListener = new KeyAdapter()
{
public void keyPressed(KeyEvent arg0)
{
if (Character.isLowerCase(arg0.getKeyChar()) == true)
{
if (arg0.getKeyCode() >= KeyEvent.VK_A
&& arg0.getKeyCode() <= KeyEvent.VK_M)
{
polly.setAnimation(arg0.getKeyCode() - KeyEvent.VK_A);
}
}
else if (Character.isUpperCase(arg0.getKeyChar()) == true)
{
if (arg0.getKeyCode() >= KeyEvent.VK_A
&& arg0.getKeyCode() <= KeyEvent.VK_M)
{
polly2.setAnimation(arg0.getKeyCode() - KeyEvent.VK_A);
}
}
}
public void keyReleased(KeyEvent arg0)
{
keyUp(null, arg0.getKeyChar());
}
};
public MouseInputListener pollyBehaviorDemoMouseListener =
new MouseInputAdapter()
{
public void mouseMoved(MouseEvent me)
{
mouseMove(null, me.getX(), me.getY());
}
public void mousePressed(MouseEvent me)
{
mouseDown(null, me.getX(), me.getY());
}
public void mouseDragged(MouseEvent me)
{
mouseDrag(null, me.getX(), me.getY());
}
public void mouseReleased(MouseEvent me)
{
mouseUp(null, me.getX(), me.getY());
}
};
}