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    }