From ee1657a798bfdc22fed2821406ac042a2f5d3534 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Sun, 19 Sep 2021 23:58:24 +0200 Subject: [PATCH] fixed a small bug --- .../com/seibel/lod/builders/LodBufferBuilder.java | 2 +- .../java/com/seibel/lod/builders/LodBuilder.java | 9 ++++++--- .../seibel/lod/objects/VerticalLevelContainer.java | 8 +++----- .../com/seibel/lod/util/DetailDistanceUtil.java | 13 +++++++++++++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java index da1564904..f168c892f 100644 --- a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java @@ -360,7 +360,7 @@ public class LodBufferBuilder for (int verticalIndex = 0; verticalIndex < lodDim.getMaxVerticalData(detailLevel, posX, posZ); verticalIndex++) { data = lodDim.getData(detailLevel, posX, posZ, verticalIndex); - if (DataPointUtil.isItVoid(data) || DataPointUtil.doesItExist(data)) + if (DataPointUtil.isItVoid(data) || !DataPointUtil.doesItExist(data)) break; LodConfig.CLIENT.graphics.lodTemplate.get().template.addLodToBuffer(currentBuffer, playerBlockPosRounded, data, adjData, detailLevel, posX, posZ, boxCache[xR][zR], renderer.previousDebugMode, renderer.lightMap); diff --git a/src/main/java/com/seibel/lod/builders/LodBuilder.java b/src/main/java/com/seibel/lod/builders/LodBuilder.java index 112d0dc25..6d6b9682d 100644 --- a/src/main/java/com/seibel/lod/builders/LodBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodBuilder.java @@ -241,13 +241,13 @@ public class LodBuilder case MULTI_LOD: long[] dataToMergeVertical; dataToMergeVertical = createVerticalDataToMerge(detail, chunk, config, startX, startZ, endX, endZ); - data = DataPointUtil.mergeMultiData(dataToMergeVertical, detailLevel); + data = DataPointUtil.mergeMultiData(dataToMergeVertical, DataPointUtil.WORLD_HEIGHT, DetailDistanceUtil.getMaxVerticalData(detailLevel)); if (data.length == 0 || data == null) data = new long[]{DataPointUtil.EMPTY_DATA}; //lodDim.clear(detailLevel, posX, posZ); for (int verticalIndex = 0; (verticalIndex < data.length) && (verticalIndex < lodDim.getMaxVerticalData(detailLevel, posX, posZ)); verticalIndex++) { - lodDim.addData(detailLevel, + boolean test = lodDim.addData(detailLevel, posX, posZ, verticalIndex, @@ -258,7 +258,6 @@ public class LodBuilder posX, posZ, verticalIndex); - System.out.println(DataPointUtil.toString(dataTest)); } break; @@ -267,6 +266,10 @@ public class LodBuilder } lodDim.updateData(LodUtil.CHUNK_DETAIL_LEVEL, chunk.getPos().x, chunk.getPos().z); + long dataTest = lodDim.getData(LodUtil.CHUNK_DETAIL_LEVEL, chunk.getPos().x, chunk.getPos().z, 0); + long dataTest2 = lodDim.getData(LodUtil.REGION_DETAIL_LEVEL, chunk.getPos().getRegionX(), chunk.getPos().getRegionZ(), 0); + /*System.out.println(LodUtil.CHUNK_DETAIL_LEVEL + " " + chunk.getPos().x + " " + chunk.getPos().z + " " + 0 + " " +DataPointUtil.toString(dataTest)); + System.out.println(LodUtil.REGION_DETAIL_LEVEL + " " + chunk.getPos().getRegionX() + " " + chunk.getPos().getRegionZ() + " " + 0 + " " +DataPointUtil.toString(dataTest2));*/ } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java b/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java index 398a036f0..b89f51aa4 100644 --- a/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java +++ b/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java @@ -32,10 +32,8 @@ public class VerticalLevelContainer implements LevelContainer posX = LevelPosUtil.getRegionModule(detailLevel, posX); posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); - int index = 0; - for(int i = 0; i < maxVerticalData; i++){ - index = posX*size*maxVerticalData + posZ*maxVerticalData + i; - dataContainer[index] = DataPointUtil.EMPTY_DATA; + for(int verticalIndex = 0; verticalIndex < maxVerticalData; verticalIndex++){ + dataContainer[posX*size*maxVerticalData + posZ*maxVerticalData + verticalIndex] = DataPointUtil.EMPTY_DATA; } } @@ -133,7 +131,7 @@ public class VerticalLevelContainer implements LevelContainer dataToMerge[(z*2+x)*maxVerticalData + verticalIndex] = lowerLevelContainer.getData(childPosX, childPosZ, verticalIndex); } } - data = DataPointUtil.mergeMultiData(dataToMerge, lowerLevelContainer.getDetailLevel()); + data = DataPointUtil.mergeMultiData(dataToMerge, lowerLevelContainer.getMaxVerticalData(), getMaxVerticalData()); for(int verticalIndex = 0; (verticalIndex < data.length) && (verticalIndex < maxVerticalData); verticalIndex++) { diff --git a/src/main/java/com/seibel/lod/util/DetailDistanceUtil.java b/src/main/java/com/seibel/lod/util/DetailDistanceUtil.java index 552538694..a9a321c0b 100644 --- a/src/main/java/com/seibel/lod/util/DetailDistanceUtil.java +++ b/src/main/java/com/seibel/lod/util/DetailDistanceUtil.java @@ -32,6 +32,19 @@ public class DetailDistanceUtil 1, 1,}; + /*private static int[] maxVerticalData = { + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8};*/ + private static LodDetail[] lodGenDetails = { LodDetail.FULL, LodDetail.HALF,