X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2FViewPanel.java;h=10c7d9a1566be988a69f14ff8ed523afdfe5e7c4;hb=197ac1b87328bb5b06ba52d3768af04b2007b087;hp=84d45293f38aa19095ee72b5d1ef99c9c18f23d4;hpb=9dcd9d8a7d3bc16eb6fde3681cd32e02dc0707e9;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 84d4529..10c7d9a 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/ViewPanel.java @@ -1,17 +1,14 @@ /* - * 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. + * Sixth 3D engine. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. * +* */ 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.renderer.raster.ShapeCollection; import javax.swing.*; @@ -40,10 +37,6 @@ public class ViewPanel extends JPanel implements ComponentListener { private Timer canvasUpdateTimer; private ViewUpdateTimerTask canvasUpdateTimerTask; private RenderingContext renderingContext = null; - /** - * UI component that mouse is currently hovering over. - */ - private MouseInteractionController currentMouseOverComponent; /** * Currently target FPS for this view. It can be changed at runtime. Also when nothing * changes in the view, then frames are not really repainted. @@ -54,6 +47,7 @@ public class ViewPanel extends JPanel implements ComponentListener { * immediately after frame got updated. */ private boolean viewRepaintNeeded = true; + public ViewPanel() { viewRenderListeners.add(avatar); viewRenderListeners.add(HIDInputTracker); @@ -126,28 +120,6 @@ public class ViewPanel extends JPanel implements ComponentListener { return renderingContext; } - private void handleDetectedComponentMouseEvents() { - if (renderingContext.objectUnderMouse != null) { - if (renderingContext.mouseEvent.button == 0) { - // mouse over - if (currentMouseOverComponent == null) { - currentMouseOverComponent = renderingContext.objectUnderMouse; - viewRepaintNeeded |= currentMouseOverComponent.mouseEntered(); - } else if (currentMouseOverComponent != renderingContext.objectUnderMouse) { - viewRepaintNeeded |= currentMouseOverComponent.mouseExited(); - currentMouseOverComponent = renderingContext.objectUnderMouse; - viewRepaintNeeded |= currentMouseOverComponent.mouseEntered(); - } - } else { - // mouse click - viewRepaintNeeded |= renderingContext.objectUnderMouse.mouseClicked(); - } - } else if (currentMouseOverComponent != null) { - viewRepaintNeeded |= currentMouseOverComponent.mouseExited(); - currentMouseOverComponent = null; - } - } - private void initializePanelLayout() { setFocusCycleRoot(true); setOpaque(true); @@ -158,7 +130,6 @@ public class ViewPanel extends JPanel implements ComponentListener { } private void renderFrame() { - // paint root geometry collection to the offscreen render buffer clearCanvas(); rootShapeCollection.paint(this, renderingContext); @@ -236,7 +207,7 @@ public class ViewPanel extends JPanel implements ComponentListener { // abort rendering if window size is invalid if ((getWidth() > 0) && (getHeight() > 0) && renderFrame) { renderFrame(); - handleDetectedComponentMouseEvents(); + viewRepaintNeeded = renderingContext.handleDetectedComponentMouseEvents(); } } @@ -256,8 +227,7 @@ public class ViewPanel extends JPanel implements ComponentListener { renderingContext = new RenderingContext(panelWidth, panelHeight); } - renderingContext.mouseEvent = null; - renderingContext.objectUnderMouse = null; + renderingContext.prepareForNewFrameRendering(); } private boolean notifyViewRenderListeners(int millisecondsPassedSinceLastUpdate) {