001    package test; 
002    
003    import java.awt.Container;
004    
005    import javax.media.opengl.GLCanvas;
006    import javax.media.opengl.GLCapabilities;
007    import javax.media.opengl.GLEventListener;
008    import javax.swing.JFrame;
009    
010    import physics3d.Angle;
011    import physics3d.GamePhysics;
012    import physics3d.Vect3;
013    
014    import rendering.Renderer;
015    
016    import components.Ball;
017    import components.GameObject;
018    import components.GameSettings;
019    import components.GameSpace;
020    import components.SquareBumper;
021    import components.TriangleBumper;
022    
023    public class WallTest extends JFrame implements Runnable {
024            static final long serialVersionUID = 1495;
025            
026            //GameSpace
027            private GameSpace gs;
028            private Ball b; //shall bounce!... maybe
029            
030            //rendering stuff
031            private final GLCanvas canvasPanel;
032            private final Renderer myRenderer;
033            
034            public WallTest() {
035                    super("A Bouncing Ball");
036                     
037                    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
038                    this.setResizable(false);
039                    this.setSize(600, 600);
040                
041                    //GameSpace
042                    gs = new GameSpace(new GameSettings());
043                    b = new Ball(Vect3.ZERO, new Vect3(50, 50, 20), "bouncing ball", gs);
044                    gs.add(b);
045                    //b.setFrozen(true);
046                    b.setTLF(new Vect3(10, 5, 5));  // start ball at 2.5 in y direction
047                    gs.getSettings().setGravity(new Vect3(0, 60, 0)); //-1 in y direction
048                    gs.getSettings().setMu2(0.9); //no drag
049                    //TriangleBumper bumper = new TriangleBumper(new Vect3(10, 12, 0), "sq bumper", gs);
050                    //SquareBumper bumper = new SquareBumper(new Vect3(10, 12, 0), "sq bumper", gs);
051                    TriangleBumper bumper = new TriangleBumper(new Vect3(10, 12, 5), "sq bumper", gs);
052                    SquareBumper tlf = new SquareBumper(new Vect3(0, 0, 0), "tlf", gs);
053                    SquareBumper tlb = new SquareBumper(new Vect3(0, 0, 9), "tlb", gs);
054                    SquareBumper blf = new SquareBumper(new Vect3(0, 19, 0), "blf", gs);
055                    SquareBumper blb = new SquareBumper(new Vect3(0, 19, 9), "blb", gs);
056                    SquareBumper trf = new SquareBumper(new Vect3(19, 0, 0), "tlf", gs);
057                    SquareBumper trb = new SquareBumper(new Vect3(19, 0, 9), "tlf", gs);
058                    SquareBumper brf = new SquareBumper(new Vect3(19, 19, 0), "tlf", gs);
059                    SquareBumper brb = new SquareBumper(new Vect3(19, 19, 9), "tlf", gs);
060                    gs.add(tlf);
061                    gs.add(tlb);
062                    gs.add(blf);
063                    gs.add(blb);
064                    gs.add(brb);
065                    gs.add(brf);
066                    gs.add(trf);
067                    gs.add(trb);
068                    
069                    //bumper.setOrientVect(Vect3.Y_HAT);
070                    //bumper.setOrientAngle(Angle.DEG_270);
071                    //gs.add(bumper);
072                    
073                    //renderer
074                    canvasPanel = new GLCanvas(new GLCapabilities());
075                    myRenderer = new Renderer(gs);
076                    canvasPanel.addGLEventListener(myRenderer);
077                    canvasPanel.setSize(600, 600);
078                    
079                    Container mainPane;
080                    mainPane = getContentPane();
081                    mainPane.add(canvasPanel);
082            }
083            
084            public void run() {
085                    // TODO Auto-generated method stub -- change this to a loop
086                    for (int f = 0; f < 40; f++) {
087                            canvasPanel.display();
088                            try {
089                                    Thread.sleep(33);
090                            } catch (InterruptedException e) {
091                                    // TODO Auto-generated catch block
092                                    e.printStackTrace();
093                            }
094                            ////System.out.println("frame +"+f+": p="+b.getPosition()+", v="+b.getVelocity());
095                    } //120 frames
096                    for (GameObject g : gs.getObjects()) {
097                            //System.out.println("g "+g.getName()+": "+g.getCenter());
098                    }
099            }
100            
101            /**
102             * @param args
103             */
104            public static void main(String[] args) {
105                    // TODO Auto-generated method stub
106                    WallTest myGUI = new WallTest();
107                    myGUI.setVisible(true);
108                    myGUI.run();
109            }
110    
111    }