From 766e5a358de350fd7d52a7e072e8a47ed31afb3c Mon Sep 17 00:00:00 2001 From: cola98765 Date: Fri, 24 Dec 2021 09:29:48 +0100 Subject: [PATCH] made connected lods configurable (TODO actually add it to config) --- .../core/builders/lodBuilding/LodBuilder.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java b/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java index a77dac93d..1ccb8edf2 100644 --- a/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java +++ b/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java @@ -80,6 +80,7 @@ public class LodBuilder //public static final boolean useExperimentalLighting = true; + private static int timesToEdgeDetect = 1; @@ -262,7 +263,7 @@ public class LodBuilder yAbs = height - 1; // We search light on above air block - depth = determineBottomPointFrom(chunk, config, xAbs, yAbs, zAbs); + depth = determineBottomPointFrom(chunk, config, xAbs, yAbs, zAbs, count < timesToEdgeDetect); if (hasCeiling && topBlock) { yAbs = depth; @@ -291,12 +292,17 @@ public class LodBuilder * Find the lowest valid point from the bottom. * Used when creating a vertical LOD. */ - private short determineBottomPointFrom(IChunkWrapper chunk, LodBuilderConfig config, int xAbs, int yAbs, int zAbs) + private short determineBottomPointFrom(IChunkWrapper chunk, LodBuilderConfig config, int xAbs, int yAbs, int zAbs, boolean strictEdge) { short depth = 0; - IBlockColorWrapper blockColorWrapper = chunk.getBlockColorWrapper(xAbs, yAbs, zAbs); - int colorOfBlock = blockColorWrapper.getColor(); + IBlockColorWrapper blockColorWrapper; + int colorOfBlock = 0; + if (strictEdge) + { + blockColorWrapper = chunk.getBlockColorWrapper(xAbs, yAbs, zAbs); + colorOfBlock = blockColorWrapper.getColor(); + } for (int y = yAbs; y >= 0; y--) { @@ -306,11 +312,14 @@ public class LodBuilder depth = (short) (y + 1); break; } - blockColorWrapper = chunk.getBlockColorWrapper(xAbs, y, zAbs); - if (colorOfBlock != blockColorWrapper.getColor()) + if (strictEdge) { - depth = (short) (y + 1); - break; + blockColorWrapper = chunk.getBlockColorWrapper(xAbs, y, zAbs); + if (colorOfBlock != blockColorWrapper.getColor()) + { + depth = (short) (y + 1); + break; + } } } return depth;