X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2FViewPanel.java;h=e068bf50f670c49f2e2fdbf9446d37d22bbcbc84;hb=99cc27235b226ba7a6d94bc3c8308601f611daad;hp=f6603a03ad54896d2b2ab14410846d926c895575;hpb=e260f919973fd3fb899d5e4b39172f7114157d9b;p=sixth-3d.git diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java b/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java index f6603a0..e068bf5 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java @@ -28,11 +28,18 @@ public class ViewPanel extends JPanel implements ComponentListener { private final ShapeCollection rootShapeCollection = new ShapeCollection(); private final Set viewRenderListeners = ConcurrentHashMap.newKeySet(); public Color backgroundColor = Color.BLACK; + /** - * Last time this view was updated. + * Stores milliseconds when last frame was updated. This is needed to calculate time delta between frames. + * Time delta is used to calculate smooth animation. */ private long lastUpdateMillis = 0; + + /** + * Timer that is used to update canvas at target FPS rate. + */ private Timer canvasUpdateTimer; + private ViewUpdateTimerTask canvasUpdateTimerTask; private RenderingContext renderingContext = null; @@ -192,7 +199,7 @@ public class ViewPanel extends JPanel implements ComponentListener { * It tells view to update itself. View can decide if actual re-rendering of * graphics is needed. */ - void updateView() { + void ensureThatViewIsUpToDate() { maintainRenderingContext(); final int millisecondsPassedSinceLastUpdate = getMillisecondsPassedSinceLastUpdate(); @@ -221,6 +228,7 @@ public class ViewPanel extends JPanel implements ComponentListener { return; } + // create new rendering context if window size has changed if ((renderingContext == null) || (renderingContext.width != panelWidth) || (renderingContext.height != panelHeight)) {