/*
- * Sixth 3D engine. 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
private static final long serialVersionUID = 1683277888885045387L;
private final List<ViewListener> viewListeners = new ArrayList<>();
- private final List<ViewUpdateListener> viewUpdateListeners = new ArrayList<>();
+ private final List<ViewRenderListener> viewRenderListeners = new ArrayList<>();
private final ViewContext context = new ViewContext(this);
/**
* Last time this view was updated
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.
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();
getViewListeners().add(listener);
}
- public void addViewUpdateListener(final ViewUpdateListener listener) {
- viewUpdateListeners.add(listener);
+ public void addViewUpdateListener(final ViewRenderListener listener) {
+ viewRenderListeners.add(listener);
}
@Override
if ((renderingContext == null)
|| (renderingContext.width != getWidth())
|| (renderingContext.height != getHeight()))
- renderingContext = new RenderingContext(getWidth(), getHeight(),
- renderingContext);
+ renderingContext = new RenderingContext(getWidth(), getHeight());
// clear drawing area
{
* 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();
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))
if (repaintDuringNextViewUpdate) {
repaintDuringNextViewUpdate = false;
- rerenderView = true;
+ reRenderFrame = true;
}
- if (rerenderView) {
+ if (reRenderFrame) {
renderFrame();
handleDetectedComponentMouseEvents();
}