From 08704aad2ca56941fac98d1d4c7591744a6df598 Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Tue, 19 Sep 2023 21:32:59 +0500 Subject: [PATCH] Allow selecting specific IDebugRenderable's for rendering --- .../config/client/DhApiDebuggingConfig.java | 2 +- .../distanthorizons/core/config/Config.java | 48 +++++++++++++++---- .../file/fullDatafile/FullDataMetaFile.java | 2 + .../file/renderfile/RenderDataMetaFile.java | 2 + .../core/generation/WorldGenerationQueue.java | 2 + .../WorldRemoteGenerationQueue.java | 6 ++- .../core/render/LodRenderSection.java | 3 ++ .../core/render/renderer/DebugRenderer.java | 4 +- .../core/render/renderer/LodRenderer.java | 2 +- 9 files changed, 57 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiDebuggingConfig.java b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiDebuggingConfig.java index b9dab4d9d..5fc74c69f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiDebuggingConfig.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/config/client/DhApiDebuggingConfig.java @@ -46,6 +46,6 @@ public class DhApiDebuggingConfig implements IDhApiDebuggingConfig { return new DhApiConfigValue(Config.Client.Advanced.Debugging.lodOnlyMode); } public IDhApiConfigValue debugWireframeRendering() - { return new DhApiConfigValue(Config.Client.Advanced.Debugging.debugWireframeRendering); } + { return new DhApiConfigValue(Config.Client.Advanced.Debugging.DebugWireframeRendering.enableRendering); } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index 3d1821bc1..c2741fab5 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -1083,6 +1083,8 @@ public class Config public static class Debugging { + public static ConfigCategory debugWireframeRendering = new ConfigCategory.Builder().set(DebugWireframeRendering.class).build(); + public static ConfigEntry rendererMode = new ConfigEntry.Builder() .set(ERendererMode.DEFAULT) .comment("" @@ -1131,15 +1133,43 @@ public class Config + " Mod compatibility is not guaranteed.") .build(); - public static ConfigEntry debugWireframeRendering = new ConfigEntry.Builder() - .set(false) - .comment("" - + "If enabled, various wireframes for debugging internal functions will be drawn. \n" - + "\n" - + "NOTE: There WILL be performance hit! \n" - + " Additionally, only stuff that's loaded after you enable this \n" - + " will render their debug wireframes.") - .build(); + public static class DebugWireframeRendering + { + public static ConfigEntry enableRendering = new ConfigEntry.Builder() + .set(false) + .comment("" + + "If enabled, various wireframes for debugging internal functions will be drawn. \n" + + "\n" + + "NOTE: There WILL be performance hit! \n" + + " Additionally, only stuff that's loaded after you enable this \n" + + " will render their debug wireframes.") + .build(); + + public static ConfigEntry fullDataMetaFile = new ConfigEntry.Builder() + .set(false) + .comment("Class: FullDataMetaFile") + .build(); + + public static ConfigEntry lodRenderSection = new ConfigEntry.Builder() + .set(false) + .comment("Class: LodRenderSection") + .build(); + + public static ConfigEntry renderDataMetaFile = new ConfigEntry.Builder() + .set(false) + .comment("Class: RenderDataMetaFile") + .build(); + + public static ConfigEntry worldGenerationQueue = new ConfigEntry.Builder() + .set(false) + .comment("Class: WorldGenerationQueue") + .build(); + + public static ConfigEntry worldRemoteGenerationQueue = new ConfigEntry.Builder() + .set(false) + .comment("Class: WorldRemoteGenerationQueue") + .build(); + } public static ConfigEntry enableWhiteWorld = new ConfigEntry.Builder() .set(false) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataMetaFile.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataMetaFile.java index 858f084e5..bfec48dbe 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataMetaFile.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataMetaFile.java @@ -431,6 +431,8 @@ public class FullDataMetaFile extends AbstractMetaDataContainerFile implements I @Override public void debugRender(DebugRenderer debugRenderer) { + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.fullDataMetaFile.get()) return; + if (this.pos.getDetailLevel() > DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL) { return; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderDataMetaFile.java b/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderDataMetaFile.java index 60991802a..a9a07910f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderDataMetaFile.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderDataMetaFile.java @@ -438,6 +438,8 @@ public class RenderDataMetaFile extends AbstractMetaDataContainerFile implements @Override public void debugRender(DebugRenderer debugRenderer) { + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.renderDataMetaFile.get()) return; + Color color = Color.black; ColumnRenderSource cached = this.cachedRenderDataSource.get(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java index 3cf6f863b..d53aa5188 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java @@ -722,6 +722,8 @@ public class WorldGenerationQueue implements IWorldGenerationQueue, IDebugRender @Override public void debugRender(DebugRenderer r) { + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.worldGenerationQueue.get()) return; + //if (true) return; waitingTasks.keySet().forEach((pos) -> { //DhLodPos pos = t.pos; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldRemoteGenerationQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldRemoteGenerationQueue.java index 65b4311d2..cb1fb2c55 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldRemoteGenerationQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldRemoteGenerationQueue.java @@ -1,5 +1,6 @@ package com.seibel.distanthorizons.core.generation; +import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dataObjects.fullData.accessor.ChunkSizedFullDataAccessor; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.CompleteFullDataSource; import com.seibel.distanthorizons.core.generation.tasks.IWorldGenTaskTracker; @@ -257,7 +258,10 @@ public class WorldRemoteGenerationQueue implements IWorldGenerationQueue, IDebug } @Override - public void debugRender(DebugRenderer r) { + public void debugRender(DebugRenderer r) + { + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.worldRemoteGenerationQueue.get()) return; + for (Map.Entry mapEntry : waitingTasks.entrySet()) { r.renderBox(new DebugRenderer.Box(mapEntry.getKey(), -32f, 64f, 0.05f, diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java index eaa32502e..ccf86b080 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java @@ -19,6 +19,7 @@ package com.seibel.distanthorizons.core.render; +import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dataObjects.render.ColumnRenderSource; import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.ColumnRenderBufferBuilder; import com.seibel.distanthorizons.core.enums.EDhDirection; @@ -99,6 +100,8 @@ public class LodRenderSection implements IDebugRenderable public void debugRender(DebugRenderer debugRenderer) { + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.lodRenderSection.get()) return; + Color color = Color.red; if (this.renderSourceProvider == null) color = Color.black; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java index 7ddfbd51e..afc2419c4 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java @@ -258,7 +258,7 @@ public class DebugRenderer public static void makeParticle(BoxParticle particle) { if (INSTANCE == null) return; - if (!Config.Client.Advanced.Debugging.debugWireframeRendering.get()) return; + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.enableRendering.get()) return; INSTANCE.particles.add(particle); } @@ -321,7 +321,7 @@ public class DebugRenderer public void addRenderer(IDebugRenderable r) { - if (!Config.Client.Advanced.Debugging.debugWireframeRendering.get()) return; + if (!Config.Client.Advanced.Debugging.DebugWireframeRendering.enableRendering.get()) return; synchronized (renderers) { renderers.add(new WeakReference<>(r)); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index 4a1c2da33..20720ba48 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -350,7 +350,7 @@ public class LodRenderer this.shaderProgram.unbind(); - if (Config.Client.Advanced.Debugging.debugWireframeRendering.get()) + if (Config.Client.Advanced.Debugging.DebugWireframeRendering.enableRendering.get()) { profiler.popPush("Debug wireframes"); // Note: this can be very slow if a lot of boxes are being rendered