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 6095b5749..f9b1c5c25 100644 --- a/src/main/java/com/seibel/lod/core/dataFormat/PositionDataFormat.java +++ b/src/main/java/com/seibel/lod/core/dataFormat/PositionDataFormat.java @@ -18,4 +18,52 @@ public class PositionDataFormat public final static int EMPTY_DATA = 0; public final static int VOID_DATA = VOID_MASK<>> LOD_COUNT_SHIFT) & LOD_COUNT_MASK); + } + + public static boolean getFlag(short dataPoint) + { + return ((dataPoint >>> CORRECT_LIGHT_SHIFT) & CORRECT_LIGHT_MASK) == 1; + } + + public static byte getGenerationMode(short dataPoint) + { + return (byte) ((dataPoint >>> GEN_TYPE_SHIFT) & GEN_TYPE_MASK); + } + + + public static boolean isVoid(short dataPoint) + { + return (((dataPoint >>> VOID_SHIFT) & VOID_MASK) == 1); + } + + public static boolean doesItExist(short dataPoint) + { + return (((dataPoint >>> EXISTENCE_SHIFT) & EXISTENCE_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 4b1d100f8..c1320076c 100644 --- a/src/main/java/com/seibel/lod/core/dataFormat/VerticalDataFormat.java +++ b/src/main/java/com/seibel/lod/core/dataFormat/VerticalDataFormat.java @@ -21,4 +21,50 @@ public class VerticalDataFormat public final static int EMPTY_LOD_MASK = 0b1; public final static int EMPTY_LOD = 0; + + 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 |= (level & LEVEL_MASK) << LEVEL_SHIFT; + if (bottom) + verticalData |= BOTTOM_TYPE_MASK << BOTTOM_TYPE_SHIFT; + if (transparent) + verticalData |= TRANSPARENCY_MASK << TRANSPARENCY_SHIFT; + verticalData |= EMPTY_LOD_MASK << EMPTY_LOD_SHIFT; + + return verticalData; + } + + public static short getHeight(int verticalData) + { + return (short) ((verticalData >>> HEIGHT_SHIFT) & HEIGHT_MASK); + } + + public static short getDepth(int verticalData) + { + return (short) ((verticalData >>> DEPTH_SHIFT) & DEPTH_MASK); + } + + public static byte getLevel(int verticalData) + { + return (byte) ((verticalData >>> LEVEL_SHIFT) & LEVEL_MASK); + } + + public static boolean isTransparent(int verticalData) + { + return ((verticalData >>> TRANSPARENCY_SHIFT) & TRANSPARENCY_MASK) == 1; + } + + public static boolean isBottom(int verticalData) + { + return ((verticalData >>> BOTTOM_TYPE_SHIFT) & BOTTOM_TYPE_MASK) == 1; + } + + public static boolean doesItExist(int verticalData) + { + return (((verticalData >>> EMPTY_LOD_SHIFT) & EMPTY_LOD_MASK) == 1); + } + }