001 package test;
002
003 import java.awt.Container;
004 import java.util.HashMap;
005 import java.util.Map;
006
007 import javax.media.opengl.GLCanvas;
008 import javax.media.opengl.GLCapabilities;
009 import javax.swing.JFrame;
010
011 import physics3d.Angle;
012 import physics3d.Vect3;
013 import rendering.Renderer;
014
015 import components.Absorber;
016 import components.GameObject;
017 import components.GameSettings;
018 import components.GameSpace;
019
020 public class RotatingGizmo extends JFrame implements Runnable {
021 static final long serialVersionUID = 1495;
022
023 //GameSpace
024 private GameSpace gs;
025 private GameObject gizmo;
026
027 //rendering stuff
028 private final GLCanvas canvasPanel;
029 private final Renderer myRenderer;
030
031 public RotatingGizmo() {
032 super("A Bouncing Ball");
033
034 this.setDefaultCloseOperation(EXIT_ON_CLOSE);
035 this.setResizable(false);
036 this.setSize(600, 600);
037
038 //GameSpace
039 gs = new GameSpace(new GameSettings());
040 gs.getSettings().setGravity(new Vect3(0, 60, 0)); //-1 in y direction
041 gs.getSettings().setMu2(0.9); //no drag
042 //TriangleBumper bumper = new TriangleBumper(new Vect3(10, 12, 0), "sq bumper", gs);
043 //SquareBumper bumper = new SquareBumper(new Vect3(10, 12, 0), "sq bumper", gs);
044 //gizmo = new TriangleBumper(new Vect3(10, 12, 0), "tri bumper", gs);
045 Map<String, String> props = new HashMap<String, String>();
046 props.put("x", "10");
047 props.put("y", "17");
048 props.put("z", "5");
049 props.put("width", "3");
050 props.put("depth", "5");
051 props.put("name", "my absorber");
052 gizmo = new Absorber(props, gs);
053 gs.add(gizmo);
054
055 //renderer
056 canvasPanel = new GLCanvas(new GLCapabilities());
057 myRenderer = new Renderer(gs);
058 canvasPanel.addGLEventListener(myRenderer);
059 canvasPanel.setSize(600, 600);
060
061 Container mainPane;
062 mainPane = getContentPane();
063 mainPane.add(canvasPanel);
064 }
065
066 public void run() {
067 // TODO Auto-generated method stub -- change this to a loop
068 for (int f = 0; f < 120; f++) {
069 canvasPanel.display();
070 try {
071 Thread.sleep(66);
072 } catch (InterruptedException e) {
073 // TODO Auto-generated catch block
074 e.printStackTrace();
075 }
076 //rotate gizmo
077 gizmo.setOrientVect(Vect3.Y_HAT);
078 gizmo.setOrientAngle(gizmo.getOrientAngle().plus(new Angle(.78)));
079
080 } //120 frames
081 }
082
083 /**
084 * @param args
085 */
086 public static void main(String[] args) {
087 // TODO Auto-generated method stub
088 RotatingGizmo myGUI = new RotatingGizmo();
089 myGUI.setVisible(true);
090 myGUI.run();
091 }
092
093 }