From f32dfbcbe7c12278479b6b129d6ebe795088e7bc Mon Sep 17 00:00:00 2001 From: Morippi Date: Wed, 23 Feb 2022 18:24:59 +0100 Subject: [PATCH] Added comments --- .../bufferBuilding/LodBufferBuilderFactory.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java b/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java index 66643ab53..22559db70 100644 --- a/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java +++ b/src/main/java/com/seibel/lod/core/builders/bufferBuilding/LodBufferBuilderFactory.java @@ -418,12 +418,19 @@ public class LodBufferBuilderFactory { chunkZdist = LevelPosUtil.getChunkPos(detailLevel, zAdj) - playerChunkZ; boolean adjPosInPlayerChunk = (chunkXdist == 0 && chunkZdist == 0); + + //We check if the adjPos is to be rendered boolean shouldAdjPosBeRendered = posToRender.contains(detailLevel, xAdj, zAdj); + //Then we check if the adjPos is to be rendered in a lower detail boolean shouldLowerAdjPosBeRendered = posToRender.contains((byte) (detailLevel-1), xAdj*2, zAdj*2); + + //since he system doesn't work for region border we need to check with another system if(!(shouldAdjPosBeRendered || shouldLowerAdjPosBeRendered)) { - + //we compute the distance from the adjPos double minDistance = LevelPosUtil.minDistance(detailLevel, xAdj, zAdj, playerX, playerZ) - 1.4142*(2 << detailLevel); + + //we compute at which detail that position should be rendered LodRegion adjRegion = lodDim.getRegion(detailLevel, xAdj, zAdj); byte minLevel; if(adjRegion != null) @@ -434,6 +441,8 @@ public class LodBufferBuilderFactory { } + //we check if the detail of the adjPos is equal to the correct one (region border fix) + //or if the detail is wrong by 1 value (region+circle border fix) shouldAdjPosBeRendered = detailLevel == minLevel; shouldLowerAdjPosBeRendered = detailLevel-1 == minLevel; } @@ -446,10 +455,12 @@ public class LodBufferBuilderFactory { if (shouldAdjPosBeRendered && !isThisPositionGoingToBeRendered(LevelPosUtil.getChunkPos(adjDetail, xAdj),LevelPosUtil.getChunkPos(adjDetail, zAdj)) && !(posNotInPlayerChunk && adjPosInPlayerChunk)) { + //The adj data is at same detail and is extracted adjData[lodDirection.ordinal() - 2][0] = lodDim.getAllData(adjDetail, xAdj, zAdj); }else{ if(shouldLowerAdjPosBeRendered) { + //The adj data is at lower detail and is extracted in two steps xAdj *= 2; zAdj *= 2; adjDetail = (byte) (detailLevel - 1);