X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2FViewPanel.java;h=ea55a312fe1e451b8971ec0e53717083f71b123e;hp=b23bf5b4a3e1c30528a92e18d93b004d19ccb837;hb=4bb8945294848559aab76e248207781c6e097714;hpb=70ee733b25c56bed539b89ff5507ae0af842d68a 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 b23bf5b..ea55a31 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java @@ -9,18 +9,18 @@ package eu.svjatoslav.sixth.e3d.gui; +import eu.svjatoslav.sixth.e3d.gui.humaninput.HIDInputTracker; import eu.svjatoslav.sixth.e3d.gui.humaninput.KeyboardFocusStack; import eu.svjatoslav.sixth.e3d.gui.humaninput.MouseInteractionController; -import eu.svjatoslav.sixth.e3d.gui.humaninput.HIDInputTracker; import eu.svjatoslav.sixth.e3d.renderer.raster.ShapeCollection; import javax.swing.*; import java.awt.*; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; -import java.util.ArrayList; -import java.util.List; +import java.util.Set; import java.util.Timer; +import java.util.concurrent.ConcurrentHashMap; /** * Java Swing GUI panel that contains canvas for 3D rendering. @@ -29,10 +29,10 @@ public class ViewPanel extends JPanel implements ComponentListener { private static final long serialVersionUID = 1683277888885045387L; public Color backgroundColor = Color.BLACK; private final HIDInputTracker HIDInputTracker = new HIDInputTracker(this); - private final KeyboardFocusStack keyboardFocusStack = new KeyboardFocusStack(this); + private final KeyboardFocusStack keyboardFocusStack; private final Avatar avatar = new Avatar(); private final ShapeCollection rootShapeCollection = new ShapeCollection(); - private final List viewRenderListeners = new ArrayList<>(); + private final Set viewRenderListeners = ConcurrentHashMap.newKeySet(); /** * Last time this view was updated. */ @@ -58,6 +58,8 @@ public class ViewPanel extends JPanel implements ComponentListener { viewRenderListeners.add(avatar); viewRenderListeners.add(HIDInputTracker); + keyboardFocusStack = new KeyboardFocusStack(this); + initializePanelLayout(); setFrameRate(targetFPS); @@ -274,4 +276,13 @@ public class ViewPanel extends JPanel implements ComponentListener { lastUpdateMillis = currentTime; return millisecondsPassedSinceLastUpdate; } + + public void addViewRenderListener(ViewRenderListener viewRenderListener) { + viewRenderListeners.add(viewRenderListener); + } + + public void removeViewRenderListener(ViewRenderListener viewRenderListener) { + viewRenderListeners.remove(viewRenderListener); + } + }