Vertical lod now works (optimization required)
This commit is contained in:
@@ -189,19 +189,20 @@ public class LodBuilder
|
||||
posX = LevelPosUtil.convert((byte) 0, chunk.getPos().x * 16 + startX, detail.detailLevel);
|
||||
posZ = LevelPosUtil.convert((byte) 0, chunk.getPos().z * 16 + startZ, detail.detailLevel);
|
||||
long[] data;
|
||||
long[] dataToMerge;
|
||||
long[][] dataToMerge;
|
||||
//data = ThreadMapUtil.getSingleAddDataArray();
|
||||
dataToMerge = createSingleDataToMerge(detail, chunk, config, startX, startZ, endX, endZ);
|
||||
long[][] dataToMerge2 = new long[dataToMerge.length][];
|
||||
//dataToMerge = createSingleDataToMerge(detail, chunk, config, startX, startZ, endX, endZ);
|
||||
/*long[][] dataToMerge2 = new long[dataToMerge.length][];
|
||||
for (int index = 0; index < dataToMerge.length; index++)
|
||||
{
|
||||
dataToMerge2[index] = new long[]{dataToMerge[index]};
|
||||
}
|
||||
}*/
|
||||
//data[0] = DataPointUtil.mergeSingleData(dataToMerge);
|
||||
|
||||
//dataToMerge = createVerticalDataToMerge(detail, chunk, config, startX, startZ, endX, endZ);
|
||||
data = DataPointUtil.mergeVerticalData(dataToMerge2);
|
||||
|
||||
dataToMerge = createVerticalDataToMerge(detail, chunk, config, startX, startZ, endX, endZ);
|
||||
data = DataPointUtil.mergeVerticalData(dataToMerge);
|
||||
if(data.length == 0 || data == null)
|
||||
data = new long[]{DataPointUtil.EMPTY_DATA};
|
||||
boolean isServer = config.distanceGenerationMode == DistanceGenerationMode.SERVER;
|
||||
lodDim.addData(detailLevel,
|
||||
posX,
|
||||
@@ -209,6 +210,7 @@ public class LodBuilder
|
||||
data,
|
||||
false,
|
||||
isServer);
|
||||
|
||||
}
|
||||
lodDim.updateData(LodUtil.CHUNK_DETAIL_LEVEL, chunk.getPos().x, chunk.getPos().z);
|
||||
} catch (Exception e)
|
||||
|
||||
@@ -42,7 +42,7 @@ public class VerticalLevelContainer implements LevelContainer
|
||||
|
||||
public boolean doesItExist(int posX, int posZ){
|
||||
long[] data = getData(posX,posZ);
|
||||
return DataPointUtil.doesItExist(data[0]);
|
||||
return (data != null && DataPointUtil.doesItExist(data[0]));
|
||||
}
|
||||
|
||||
public VerticalLevelContainer(String inputString)
|
||||
|
||||
@@ -105,9 +105,9 @@ public class DataPointUtil
|
||||
return (short) ((dataPoint >>> BLUE_SHIFT) & BLUE_MASK);
|
||||
}
|
||||
|
||||
public static byte getLightValue(long dataPoint)
|
||||
public static int getLightValue(long dataPoint)
|
||||
{
|
||||
return (byte) ((dataPoint >>> LIGHT_SHIFT) & LIGHT_MASK);
|
||||
return (int) ((dataPoint >>> LIGHT_SHIFT) & LIGHT_MASK);
|
||||
}
|
||||
|
||||
public static byte getGenerationMode(long dataPoint)
|
||||
@@ -128,15 +128,15 @@ public class DataPointUtil
|
||||
|
||||
public static int getColor(long dataPoint)
|
||||
{
|
||||
return (int) ((dataPoint >>> COLOR_SHIFT) & COLOR_MASK);
|
||||
return (int) (dataPoint >>> COLOR_SHIFT);
|
||||
}
|
||||
|
||||
public static int getLightColor(long dataPoint)
|
||||
{
|
||||
int lightBlock = getLightValue(dataPoint);
|
||||
int red = Math.min(getRed(dataPoint) + lightBlock * 8, 255);
|
||||
int green = Math.min(getGreen(dataPoint) + lightBlock * 8, 255);
|
||||
int blue = Math.min(getBlue(dataPoint) + lightBlock * 4, 255);
|
||||
int red = LodUtil.clamp(0, getRed(dataPoint) + lightBlock * 8, 255);
|
||||
int green = LodUtil.clamp(0, getGreen(dataPoint) + lightBlock * 8, 255);
|
||||
int blue = LodUtil.clamp(0, getBlue(dataPoint) + lightBlock * 4, 255);
|
||||
return ColorUtil.rgbToInt(red, green, blue);
|
||||
}
|
||||
|
||||
@@ -147,11 +147,21 @@ public class DataPointUtil
|
||||
s.append(" ");
|
||||
s.append(getDepth(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(getAlpha(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(getRed(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(getBlue(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(getGreen(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(getLightValue(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(getGenerationMode(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(isItVoid(dataPoint));
|
||||
s.append(" ");
|
||||
s.append(doesItExist(dataPoint));
|
||||
s.append('\n');
|
||||
return s.toString();
|
||||
}
|
||||
@@ -302,7 +312,7 @@ public class DataPointUtil
|
||||
if ((depth <= getDepth(singleData) && getDepth(singleData) <= height)
|
||||
|| (depth <= getHeight(singleData) && getHeight(singleData) <= height))
|
||||
{
|
||||
singleDataToMerge[dataIndex] = singleData;
|
||||
singleDataToMerge[index] = singleData;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user