From 717e189107f6bcbe4f33a81c55b610f24a0d7c0c Mon Sep 17 00:00:00 2001 From: cola98765 Date: Sat, 30 Oct 2021 12:49:58 +0200 Subject: [PATCH] made "Enable Rendering" only affect buffer building to enable generation with no rendering --- .../seibel/lod/mixin/MixinWorldRenderer.java | 2 +- .../com/seibel/lod/render/LodRenderer.java | 23 +++++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java b/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java index 1d9aca68f..998500528 100644 --- a/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java +++ b/src/main/java/com/seibel/lod/mixin/MixinWorldRenderer.java @@ -59,7 +59,7 @@ public class MixinWorldRenderer { // only render if LODs are enabled and // only render before solid blocks - if (LodConfig.CLIENT.advancedModOptions.debugging.drawLods.get() && renderType.equals(RenderType.solid())) + if (renderType.equals(RenderType.solid())) LodMain.client_proxy.renderLods(matrixStackIn, previousPartialTicks); } } diff --git a/src/main/java/com/seibel/lod/render/LodRenderer.java b/src/main/java/com/seibel/lod/render/LodRenderer.java index 7623bf05e..6554afa3e 100644 --- a/src/main/java/com/seibel/lod/render/LodRenderer.java +++ b/src/main/java/com/seibel/lod/render/LodRenderer.java @@ -197,17 +197,22 @@ public class LodRenderer // 2. we aren't already regenerating the LODs // 3. we aren't waiting for the build and draw buffers to swap // (this is to prevent thread conflicts) - if ((partialRegen || fullRegen) && !lodBufferBuilder.generatingBuffers && !lodBufferBuilder.newBuffersAvailable()) + if (LodConfig.CLIENT.advancedModOptions.debugging.drawLods.get()) { - // generate the LODs on a separate thread to prevent stuttering or freezing - lodBufferBuilder.generateLodBuffersAsync(this, lodDim, mc.getPlayer().blockPosition(), true); - - // the regen process has been started, - // it will be done when lodBufferBuilder.newBuffersAvailable() - // is true - fullRegen = false; - partialRegen = false; + if ((partialRegen || fullRegen) && !lodBufferBuilder.generatingBuffers && !lodBufferBuilder.newBuffersAvailable()) + { + // generate the LODs on a separate thread to prevent stuttering or freezing + lodBufferBuilder.generateLodBuffersAsync(this, lodDim, mc.getPlayer().blockPosition(), true); + + // the regen process has been started, + // it will be done when lodBufferBuilder.newBuffersAvailable() + // is true + fullRegen = false; + partialRegen = false; + } } + else + lodBufferBuilder.destroyBuffers(); // TODO move the buffer regeneration logic into its own class (probably called in the client proxy instead) // ...ending here