diff --git a/src/main/java/com/seibel/lod/core/objects/lod/LodRegion.java b/src/main/java/com/seibel/lod/core/objects/lod/LodRegion.java index 7acd6b8cf..d964d7678 100644 --- a/src/main/java/com/seibel/lod/core/objects/lod/LodRegion.java +++ b/src/main/java/com/seibel/lod/core/objects/lod/LodRegion.java @@ -162,9 +162,7 @@ public class LodRegion // The dataContainer could have null entries if the // detailLevel changes. if (this.dataContainer[detailLevel] == null) - { this.dataContainer[detailLevel] = new VerticalLevelContainer(detailLevel); - } this.dataContainer[detailLevel].addData(data, posX, posZ, verticalIndex); @@ -179,9 +177,8 @@ public class LodRegion */ public boolean addVerticalData(byte detailLevel, int posX, int posZ, long[] data) { - //position is already relative - //posX = LevelPosUtil.getRegionModule(detailLevel, posX); - //posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); + posX = LevelPosUtil.getRegionModule(detailLevel, posX); + posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); // The dataContainer could have null entries if the // detailLevel changes. @@ -198,6 +195,8 @@ public class LodRegion */ public long getData(byte detailLevel, int posX, int posZ, int verticalIndex) { + posX = LevelPosUtil.getRegionModule(detailLevel, posX); + posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); return dataContainer[detailLevel].getData(posX, posZ, verticalIndex); } @@ -208,6 +207,8 @@ public class LodRegion */ public long getSingleData(byte detailLevel, int posX, int posZ) { + posX = LevelPosUtil.getRegionModule(detailLevel, posX); + posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); return dataContainer[detailLevel].getSingleData(posX, posZ); } @@ -216,6 +217,8 @@ public class LodRegion */ public void clear(byte detailLevel, int posX, int posZ) { + posX = LevelPosUtil.getRegionModule(detailLevel, posX); + posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); dataContainer[detailLevel].clear(posX, posZ); } @@ -450,6 +453,8 @@ public class LodRegion */ private void update(byte detailLevel, int posX, int posZ) { + posX = LevelPosUtil.getRegionModule(detailLevel, posX); + posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); dataContainer[detailLevel].updateData(dataContainer[detailLevel - 1], posX, posZ); } @@ -459,15 +464,12 @@ public class LodRegion */ public boolean doesDataExist(byte detailLevel, int posX, int posZ) { - if (detailLevel < minDetailLevel) + if (detailLevel < minDetailLevel || dataContainer[detailLevel] == null) return false; posX = LevelPosUtil.getRegionModule(detailLevel, posX); posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); - if (dataContainer[detailLevel] == null) - return false; - return dataContainer[detailLevel].doesItExist(posX, posZ); } diff --git a/src/main/java/com/seibel/lod/core/objects/lod/VerticalLevelContainer.java b/src/main/java/com/seibel/lod/core/objects/lod/VerticalLevelContainer.java index f813a9a86..2f1c19548 100644 --- a/src/main/java/com/seibel/lod/core/objects/lod/VerticalLevelContainer.java +++ b/src/main/java/com/seibel/lod/core/objects/lod/VerticalLevelContainer.java @@ -56,19 +56,13 @@ public class VerticalLevelContainer implements LevelContainer @Override public void clear(int posX, int posZ) { - posX = LevelPosUtil.getRegionModule(detailLevel, posX); - posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); for (int verticalIndex = 0; verticalIndex < maxVerticalData; verticalIndex++) - { dataContainer[posX * size * maxVerticalData + posZ * maxVerticalData + verticalIndex] = DataPointUtil.EMPTY_DATA; - } } @Override public boolean addData(long data, int posX, int posZ, int verticalIndex) { - posX = LevelPosUtil.getRegionModule(detailLevel, posX); - posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); dataContainer[posX * size * maxVerticalData + posZ * maxVerticalData + verticalIndex] = data; return true; } @@ -76,8 +70,6 @@ public class VerticalLevelContainer implements LevelContainer @Override public boolean addVerticalData(long[] data, int posX, int posZ) { - posX = LevelPosUtil.getRegionModule(detailLevel, posX); - posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); for (int verticalIndex = 0; verticalIndex < maxVerticalData; verticalIndex++) dataContainer[posX * size * maxVerticalData + posZ * maxVerticalData + verticalIndex] = data[verticalIndex]; return true; @@ -92,15 +84,13 @@ public class VerticalLevelContainer implements LevelContainer @Override public long getData(int posX, int posZ, int verticalIndex) { - posX = LevelPosUtil.getRegionModule(detailLevel, posX); - posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); return dataContainer[posX * size * maxVerticalData + posZ * maxVerticalData + verticalIndex]; } @Override public long getSingleData(int posX, int posZ) { - return getData(posX, posZ, 0); + return dataContainer[posX * size * maxVerticalData + posZ * maxVerticalData]; } @Override @@ -117,8 +107,6 @@ public class VerticalLevelContainer implements LevelContainer @Override public boolean doesItExist(int posX, int posZ) { - posX = LevelPosUtil.getRegionModule(detailLevel, posX); - posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); return DataPointUtil.doesItExist(getSingleData(posX, posZ)); } @@ -209,8 +197,6 @@ public class VerticalLevelContainer implements LevelContainer int childPosX; int childPosZ; long[] data; - posX = LevelPosUtil.getRegionModule(detailLevel, posX); - posZ = LevelPosUtil.getRegionModule(detailLevel, posZ); for (int x = 0; x <= 1; x++) { for (int z = 0; z <= 1; z++)