diff --git a/src/sig/Panel.java b/src/sig/Panel.java new file mode 100644 index 0000000..342385f --- /dev/null +++ b/src/sig/Panel.java @@ -0,0 +1,10 @@ +package sig; + +import javax.swing.JPanel; +import java.awt.Graphics; + +public class Panel extends JPanel{ + public void paintComponent(Graphics g) { + + } +} diff --git a/src/sig/SigRenderer.java b/src/sig/SigRenderer.java index 3730bcb..4477bec 100644 --- a/src/sig/SigRenderer.java +++ b/src/sig/SigRenderer.java @@ -1,16 +1,91 @@ package sig; import javax.swing.JFrame; import javax.vecmath.Vector3d; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; -public class SigRenderer { +public class SigRenderer implements MouseListener,MouseMotionListener{ Vector3d vec; + public final static int SCREEN_WIDTH=1280; + public final static int SCREEN_HEIGHT=720; + public final static long TIMEPERTICK = 16666667l; + public static double DRAWTIME=0; + + public void runGameLoop() { + + } SigRenderer(JFrame f) { vec = new Vector3d(); System.out.println(vec); + + Panel p = new Panel(); + + new Thread() { + public void run(){ + while (true) { + long startTime = System.nanoTime(); + runGameLoop(); + p.repaint(); + long endTime = System.nanoTime(); + long diff = endTime-startTime; + if (diff>TIMEPERTICK) { //Took longer than 1/60th of a second. No sleep. + System.err.println("Frame Drawing took longer than "+TIMEPERTICK+"ns to calculate ("+diff+"ns total)!"); + } else { + try { + long sleepTime = TIMEPERTICK - diff; + long millis = (sleepTime)/1000000; + int nanos = (int)(sleepTime-(((sleepTime)/1000000)*1000000)); + //System.out.println("FRAME DRAWING: Sleeping for ("+millis+"ms,"+nanos+"ns) - "+(diff)+"ns"); + DRAWTIME = (double)diff/1000000; + f.setTitle("Game Loop: "+DRAWTIME+"ms"); + Thread.sleep(millis,nanos); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + }.start(); + + f.getContentPane().addMouseListener(this); + f.getContentPane().addMouseMotionListener(this); + f.add(p); + f.setSize(SCREEN_WIDTH,SCREEN_HEIGHT); + f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + f.setVisible(true); } public static void main(String[] args) { JFrame f = new JFrame("SigRenderer"); new SigRenderer(f); } + + @Override + public void mouseClicked(MouseEvent e) { + } + + @Override + public void mousePressed(MouseEvent e) { + } + + @Override + public void mouseReleased(MouseEvent e) { + } + + @Override + public void mouseEntered(MouseEvent e) { + } + + @Override + public void mouseExited(MouseEvent e) { + } + + @Override + public void mouseDragged(MouseEvent e) { + } + + @Override + public void mouseMoved(MouseEvent e) { + } }