From e33706c21d73b77bf52b7ae96911263bb415be04 Mon Sep 17 00:00:00 2001 From: austin Date: Sat, 23 Nov 2024 17:09:55 -0500 Subject: [PATCH] Break out network monitor debug window --- docs/src/progress/renderertodo.md | 1 + .../ui/menu/debug/ImGuiChunkMonitor.java | 40 ---------- .../ui/menu/debug/ImGuiNetworkMonitor.java | 78 +++++++++++++++++++ .../ui/menu/debug/ImGuiWindowMacros.java | 4 + 4 files changed, 83 insertions(+), 40 deletions(-) create mode 100644 src/main/java/electrosphere/client/ui/menu/debug/ImGuiNetworkMonitor.java diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index d4c7735d..671315b4 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1135,6 +1135,7 @@ Break out dependency documentation into a dedicated file Fix terrain editing Fix foliage not updating at edited chunk Dedicated control for opening crafting +Break out network imgui debug window # TODO diff --git a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiChunkMonitor.java b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiChunkMonitor.java index a375fd6a..c4c9fd52 100644 --- a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiChunkMonitor.java +++ b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiChunkMonitor.java @@ -1,8 +1,6 @@ package electrosphere.client.ui.menu.debug; import electrosphere.engine.Globals; -import electrosphere.renderer.ui.imgui.ImGuiLinePlot; -import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset; import electrosphere.renderer.ui.imgui.ImGuiWindow; import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback; import imgui.ImGui; @@ -32,52 +30,14 @@ public class ImGuiChunkMonitor { protected static void createChunkMonitorWindow(){ chunkMonitorWindow = new ImGuiWindow("Chunk Monitor"); - //client network pressure graph - ImGuiLinePlot clientNetworkBandwith = new ImGuiLinePlot("Client Network Pressure",400,400); - ImGuiLinePlotDataset clientPressureDataset = new ImGuiLinePlotDataset("Client bytes per frame", PRESSURE_GRAPH_POINT_COUNT); - clientPressureDataset.zeroOut(); - clientNetworkBandwith.addDataset(clientPressureDataset); - - //server network pressure graph - ImGuiLinePlot serverNetworkPressureGraph = new ImGuiLinePlot("Server Network Pressure",400,400); - ImGuiLinePlotDataset serverPressureDataset = new ImGuiLinePlotDataset("Server bytes per frame", PRESSURE_GRAPH_POINT_COUNT); - serverPressureDataset.zeroOut(); - serverNetworkPressureGraph.addDataset(serverPressureDataset); - chunkMonitorWindow.setCallback(new ImGuiWindowCallback() { - long clientPressureLastValue = 0; - long serverPressureLastValue = 0; - @Override public void exec() { - - //ui framework text ImGui.text("Chunk Monitor"); Globals.clientDrawCellManager.updateStatus(); ImGui.text("Full res chunks: " + Globals.clientDrawCellManager.getMaxResCount()); - // ImGui.text("Garbage queue: " + Globals.clientDrawCellManager.getGarbageSize()); - - - //client network pressure - if(Globals.clientConnection != null){ - long clientPressureNewTotal = Globals.clientConnection.getNumBytesRead(); - long clientPressureDelta = clientPressureNewTotal - clientPressureLastValue; - clientPressureDataset.addPoint(clientPressureDelta); - clientPressureLastValue = clientPressureNewTotal; - } - clientNetworkBandwith.draw(); - - //server network pressure - if(Globals.server != null && Globals.server.getFirstConnection() != null){ - long serverPressureNewTotal = Globals.server.getFirstConnection().getNumBytesRead(); - long serverPressureDelta = serverPressureNewTotal - serverPressureLastValue; - serverPressureDataset.addPoint(serverPressureDelta); - serverPressureLastValue = serverPressureNewTotal; - } - serverNetworkPressureGraph.draw(); - } }); chunkMonitorWindow.setOpen(false); diff --git a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiNetworkMonitor.java b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiNetworkMonitor.java new file mode 100644 index 00000000..12cfb0b1 --- /dev/null +++ b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiNetworkMonitor.java @@ -0,0 +1,78 @@ +package electrosphere.client.ui.menu.debug; + +import electrosphere.engine.Globals; +import electrosphere.renderer.ui.imgui.ImGuiLinePlot; +import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset; +import electrosphere.renderer.ui.imgui.ImGuiWindow; +import electrosphere.renderer.ui.imgui.ImGuiWindow.ImGuiWindowCallback; + +public class ImGuiNetworkMonitor { + + /** + * Num datapoints + */ + public static final int PRESSURE_GRAPH_POINT_COUNT = 100; + + /** + * Window for viewing chunk status on server and client + */ + protected static ImGuiWindow netMonitorWindow; + + /** + * Creates the windows in this file + */ + protected static void createNetworkMonitorWindows(){ + createNetworkMonitorWindow(); + } + + /** + * Client scene entity view + */ + protected static void createNetworkMonitorWindow(){ + netMonitorWindow = new ImGuiWindow("Network Monitor"); + + //client network pressure graph + ImGuiLinePlot clientNetworkBandwith = new ImGuiLinePlot("Client Network Pressure",400,400); + ImGuiLinePlotDataset clientPressureDataset = new ImGuiLinePlotDataset("Client bytes per frame", PRESSURE_GRAPH_POINT_COUNT); + clientPressureDataset.zeroOut(); + clientNetworkBandwith.addDataset(clientPressureDataset); + + //server network pressure graph + ImGuiLinePlot serverNetworkPressureGraph = new ImGuiLinePlot("Server Network Pressure",400,400); + ImGuiLinePlotDataset serverPressureDataset = new ImGuiLinePlotDataset("Server bytes per frame", PRESSURE_GRAPH_POINT_COUNT); + serverPressureDataset.zeroOut(); + serverNetworkPressureGraph.addDataset(serverPressureDataset); + + netMonitorWindow.setCallback(new ImGuiWindowCallback() { + long clientPressureLastValue = 0; + long serverPressureLastValue = 0; + + @Override + public void exec() { + + + //client network pressure + if(Globals.clientConnection != null){ + long clientPressureNewTotal = Globals.clientConnection.getNumBytesRead(); + long clientPressureDelta = clientPressureNewTotal - clientPressureLastValue; + clientPressureDataset.addPoint(clientPressureDelta); + clientPressureLastValue = clientPressureNewTotal; + } + clientNetworkBandwith.draw(); + + //server network pressure + if(Globals.server != null && Globals.server.getFirstConnection() != null){ + long serverPressureNewTotal = Globals.server.getFirstConnection().getNumBytesRead(); + long serverPressureDelta = serverPressureNewTotal - serverPressureLastValue; + serverPressureDataset.addPoint(serverPressureDelta); + serverPressureLastValue = serverPressureNewTotal; + } + serverNetworkPressureGraph.draw(); + + } + }); + netMonitorWindow.setOpen(false); + Globals.renderingEngine.getImGuiPipeline().addImGuiWindow(netMonitorWindow); + } + +} diff --git a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java index c1c338c7..5e58a9f9 100644 --- a/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java +++ b/src/main/java/electrosphere/client/ui/menu/debug/ImGuiWindowMacros.java @@ -52,6 +52,7 @@ public class ImGuiWindowMacros { ImGuiRenderer.createRendererWindows(); ImGuiTestGen.createTestGenWindows(); ImGuiChunkMonitor.createChunkMonitorWindows(); + ImGuiNetworkMonitor.createNetworkMonitorWindows(); ImGuiGriddedManager.createGriddedManagerWindows(); ImGuiMemory.createMemoryWindows(); } @@ -199,6 +200,9 @@ public class ImGuiWindowMacros { if(ImGui.button("Memory Usage")){ ImGuiMemory.memoryWindow.setOpen(!ImGuiMemory.memoryWindow.isOpen()); } + if(ImGui.button("Network Monitor")){ + ImGuiNetworkMonitor.netMonitorWindow.setOpen(true); + } //close button if(ImGui.button("Close")){ mainDebugWindow.setOpen(false);