X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2FView.java;h=615c69b9f533559a4cc6a8a96fcc8077a4b0bb76;hp=ecd0e9d9b3c6b53b95da874b5767cbe1e85a9ce4;hb=baab2e2c2ad89695293f3136311c585c9a5afed1;hpb=6213716671ccab6b7256de41838e1f5401ce173c diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/gui/View.java b/src/main/java/eu/svjatoslav/sixth/e3d/gui/View.java index ecd0e9d..615c69b 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/View.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/View.java @@ -1,10 +1,10 @@ /* - * Sixth - System for data storage, computation, exploration and interaction. - * Copyright ©2012-2016, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * + * Sixth 3D engine. Copyright ©2012-2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * * This program is free software; you can redistribute it and/or * modify it under the terms of version 3 of the GNU Lesser General Public License * or later as published by the Free Software Foundation. + * */ package eu.svjatoslav.sixth.e3d.gui; @@ -23,7 +23,7 @@ public class View extends JPanel implements ComponentListener { private static final long serialVersionUID = 1683277888885045387L; private final List viewListeners = new ArrayList<>(); - private final List viewUpdateListeners = new ArrayList<>(); + private final List viewRenderListeners = new ArrayList<>(); private final ViewContext context = new ViewContext(this); /** * Last time this view was updated @@ -31,7 +31,7 @@ public class View extends JPanel implements ComponentListener { long lastUpdateMillis = 0; private Timer canvasUpdateTimer; private ViewUpdateTimerTask canvasUpdateTimerTask; - private RenderingContext renderingContext = new RenderingContext(1, 1, null); + private RenderingContext renderingContext = null; private MouseInteractionController currentMouseOverComponent; /** * Currently target FPS for this view. It might change at runtime. @@ -40,11 +40,11 @@ public class View extends JPanel implements ComponentListener { private boolean repaintDuringNextViewUpdate = true; public View() { - viewUpdateListeners.add(context.getAvatar()); + viewRenderListeners.add(context.getAvatar()); // initialize input tracker context.getUserInputTracker().bind(this); - viewUpdateListeners.add(context.getUserInputTracker()); + viewRenderListeners.add(context.getUserInputTracker()); initializePanelLayout(); @@ -57,8 +57,8 @@ public class View extends JPanel implements ComponentListener { getViewListeners().add(listener); } - public void addViewUpdateListener(final ViewUpdateListener listener) { - viewUpdateListeners.add(listener); + public void addViewUpdateListener(final ViewRenderListener listener) { + viewRenderListeners.add(listener); } @Override @@ -153,8 +153,7 @@ public class View extends JPanel implements ComponentListener { if ((renderingContext == null) || (renderingContext.width != getWidth()) || (renderingContext.height != getHeight())) - renderingContext = new RenderingContext(getWidth(), getHeight(), - renderingContext); + renderingContext = new RenderingContext(getWidth(), getHeight()); // clear drawing area { @@ -219,8 +218,10 @@ public class View extends JPanel implements ComponentListener { * graphics is needed. */ public void updateView() { - renderingContext.mouseClick = null; - renderingContext.clickedItem = null; + if (renderingContext != null){ + renderingContext.mouseClick = null; + renderingContext.clickedItem = null; + } // compute time passed since last view update final long currentTime = System.currentTimeMillis(); @@ -234,12 +235,12 @@ public class View extends JPanel implements ComponentListener { lastUpdateMillis = currentTime; // notify update listeners - boolean rerenderView = false; + boolean reRenderFrame = false; - for (final ViewUpdateListener listener : viewUpdateListeners) - if (listener.beforeViewUpdate(context, + for (final ViewRenderListener listener : viewRenderListeners) + if (listener.beforeRender(context, millisecondsPassedSinceLastUpdate)) - rerenderView = true; + reRenderFrame = true; // abort rendering if window size is invalid if ((getWidth() <= 0) || (getHeight() <= 0)) @@ -247,10 +248,10 @@ public class View extends JPanel implements ComponentListener { if (repaintDuringNextViewUpdate) { repaintDuringNextViewUpdate = false; - rerenderView = true; + reRenderFrame = true; } - if (rerenderView) { + if (reRenderFrame) { renderFrame(); handleDetectedComponentMouseEvents(); }