From 686592effb12de95cf86b45d56dc51f82caa691a Mon Sep 17 00:00:00 2001 From: cola98765 Date: Mon, 20 Sep 2021 10:43:12 +0200 Subject: [PATCH] fixed bug in loading vertical data --- .../lod/objects/VerticalLevelContainer.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java b/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java index b89f51aa4..fe24ee0a8 100644 --- a/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java +++ b/src/main/java/com/seibel/lod/objects/VerticalLevelContainer.java @@ -93,9 +93,15 @@ public class VerticalLevelContainer implements LevelContainer newData = 0; if (inputData[index] == 0) index++; + if (inputData[index] == 3) + { + newData = 3; + index++; + } else if (index + 7 >= inputData.length) break; - else { + else + { for (tempIndex = 0; tempIndex < 8; tempIndex++) newData += (((long) inputData[index + tempIndex]) & 0xff) << (8 * tempIndex); index = index + 8; @@ -158,17 +164,18 @@ public class VerticalLevelContainer implements LevelContainer { for (y = 0; y < maxVerticalData; y++) { - if (dataContainer[(x * size + z) * maxVerticalData + y] == 0) + int i = (x * size + z) * maxVerticalData + y; + if (dataContainer[i] == 0) { tempData[index] = 0; index++; - } else if (dataContainer[(x * size + z) * maxVerticalData + y] == 3) + } else if (dataContainer[i] == 3) { tempData[index] = 3; index++; } else { for (tempIndex = 0; tempIndex < 8; tempIndex++) - tempData[index + tempIndex] = (byte) (dataContainer[(x * size + z) * maxVerticalData + y] >>> (8 * tempIndex)); + tempData[index + tempIndex] = (byte) (dataContainer[i] >>> (8 * tempIndex)); index += 8; } }