From 30d392f8618e64a3902a981429db331f9d886779 Mon Sep 17 00:00:00 2001 From: Morippi Date: Thu, 9 Dec 2021 20:25:01 +0100 Subject: [PATCH] Added field name and methods name for the merge --- .../lod/core/dataFormat/DataMerger.java | 5 --- .../core/dataFormat/PositionDataFormat.java | 11 ++++- .../core/dataFormat/VerticalDataFormat.java | 19 ++++++-- .../objects/lod/VerticalLevelContainer.java | 44 +++++++++++++++++++ 4 files changed, 69 insertions(+), 10 deletions(-) delete mode 100644 src/main/java/com/seibel/lod/core/dataFormat/DataMerger.java diff --git a/src/main/java/com/seibel/lod/core/dataFormat/DataMerger.java b/src/main/java/com/seibel/lod/core/dataFormat/DataMerger.java deleted file mode 100644 index c10f3d2aa..000000000 --- a/src/main/java/com/seibel/lod/core/dataFormat/DataMerger.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.seibel.lod.core.dataFormat; - -public class DataMerger -{ -} diff --git a/src/main/java/com/seibel/lod/core/dataFormat/PositionDataFormat.java b/src/main/java/com/seibel/lod/core/dataFormat/PositionDataFormat.java index f9b1c5c25..4e630e19b 100644 --- a/src/main/java/com/seibel/lod/core/dataFormat/PositionDataFormat.java +++ b/src/main/java/com/seibel/lod/core/dataFormat/PositionDataFormat.java @@ -40,12 +40,21 @@ public class PositionDataFormat return positionData; } + public static String toString(int verticalData, short positionData) + { + return getLodCount(verticalData) + " " + + getLightFlag(verticalData) + " " + + getGenerationMode(verticalData) + " " + + isVoid(verticalData) + " " + + doesItExist(verticalData) + " " +'\n'; + } + public static byte getLodCount(short dataPoint) { return (byte) ((dataPoint >>> LOD_COUNT_SHIFT) & LOD_COUNT_MASK); } - public static boolean getFlag(short dataPoint) + public static boolean getLightFlag(short dataPoint) { return ((dataPoint >>> CORRECT_LIGHT_SHIFT) & CORRECT_LIGHT_MASK) == 1; } diff --git a/src/main/java/com/seibel/lod/core/dataFormat/VerticalDataFormat.java b/src/main/java/com/seibel/lod/core/dataFormat/VerticalDataFormat.java index c1320076c..9dceacce5 100644 --- a/src/main/java/com/seibel/lod/core/dataFormat/VerticalDataFormat.java +++ b/src/main/java/com/seibel/lod/core/dataFormat/VerticalDataFormat.java @@ -4,6 +4,7 @@ public class VerticalDataFormat { public final static short MIN_WORLD_HEIGHT = -2048; public final static short MAX_WORLD_HEIGHT = 2047; + public final static short WORLD_HEIGHT = MAX_WORLD_HEIGHT - MIN_WORLD_HEIGHT; public final static byte HEIGHT_SHIFT = 20; public final static byte DEPTH_SHIFT = 8; @@ -25,8 +26,8 @@ public class VerticalDataFormat public static int createVerticalData(int height, int depth, int level, boolean transparent, boolean bottom) { int verticalData = 0; - verticalData |= (height & HEIGHT_MASK) << HEIGHT_SHIFT; - verticalData |= (depth & DEPTH_MASK) << DEPTH_SHIFT; + verticalData |= ((height - MIN_WORLD_HEIGHT) & HEIGHT_MASK) << HEIGHT_SHIFT; + verticalData |= ((depth - MIN_WORLD_HEIGHT) & DEPTH_MASK) << DEPTH_SHIFT; verticalData |= (level & LEVEL_MASK) << LEVEL_SHIFT; if (bottom) verticalData |= BOTTOM_TYPE_MASK << BOTTOM_TYPE_SHIFT; @@ -37,14 +38,24 @@ public class VerticalDataFormat return verticalData; } + public static String toString(int verticalData, short positionData) + { + return getHeight(verticalData) + " " + + getDepth(verticalData) + " " + + getLevel(verticalData) + " " + + isTransparent(verticalData) + " " + + isBottom(verticalData) + " " + + doesItExist(verticalData) + " " + '\n'; + } + public static short getHeight(int verticalData) { - return (short) ((verticalData >>> HEIGHT_SHIFT) & HEIGHT_MASK); + return (short) (((verticalData >>> HEIGHT_SHIFT) & HEIGHT_MASK) + MIN_WORLD_HEIGHT); } public static short getDepth(int verticalData) { - return (short) ((verticalData >>> DEPTH_SHIFT) & DEPTH_MASK); + return (short) (((verticalData >>> DEPTH_SHIFT) & DEPTH_MASK) + MIN_WORLD_HEIGHT); } public static byte getLevel(int verticalData) 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 aeb651613..137892b8a 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 @@ -36,10 +36,22 @@ public class VerticalLevelContainer implements LevelContainer public final byte detailLevel; public final int size; + public final int chunkCount = 0; + public final int chunkSize = 0; + public final int maxVerticalData; public final long[] dataContainer; + //length should be chunkCount + public final byte[] verticalSize = null; + + //length should be chunkCount + public final short[] positionData = null; + public final int[][] verticalData = null; + public final int[][] colorData = null; + public final byte[][] lightData = null; + public VerticalLevelContainer(byte detailLevel) { this.detailLevel = detailLevel; @@ -267,6 +279,38 @@ public class VerticalLevelContainer implements LevelContainer } } + /** + * + * @param positionDataToMerge + * @effect + */ + public void computePositionData(int[] positionDataToMerge) + { + + } + + /** + * + * @param verticalDataToMerge + * @param maxVerticalData max vertical size of the merged data + * @effect save in + */ + public void computeHeightAndDepthData(int[] verticalDataToMerge, int maxVerticalData) + { + + } + + /** + * + * @param colorDataToMerge + * @param lightDataToMerge + * @effect + */ + public void computeColorLightVerticalData(int[] colorDataToMerge, byte[] lightDataToMerge) + { + + } + /** * This method merge column of multiple data together * @param dataToMerge one or more columns of data