fixed LevelPos and colors

This commit is contained in:
Leonardo
2021-08-26 14:28:27 +02:00
parent 74e4744ff7
commit 70317a37cb
5 changed files with 19 additions and 19 deletions
@@ -182,6 +182,7 @@ public class LodBufferBuilder
{
byte detailToRender;
boolean zFix;
LevelPos adjPos = new LevelPos();
Set<LevelPos> setOfPosToRender = new HashSet<>();
for (byte detail = detailLevel; detail <= LodUtil.REGION_DETAIL_LEVEL; detail++)
@@ -223,26 +224,24 @@ public class LodBufferBuilder
try
{
ChunkPos adjChunkPos = new ChunkPos(0, 0);
LevelPos adjPos = new LevelPos();
if (lodDim.doesDataExist(posToRender))
{
short[] lodData = lodDim.getData(posToRender);
short[][][] adjData = new short[2][2][];
/*
for (int x : new int[]{0, 1})
{
adjPos.changeParameters(posToRender.detailLevel, posToRender.posX + x * 2 - 1, posToRender.posZ);
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos())
&& setOfPosToRender.contains(adjPos))
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos()))
adjData[0][x] = lodDim.getData(adjPos);
}
for (int z : new int[]{0, 1})
{
adjPos.changeParameters(posToRender.detailLevel, posToRender.posX, posToRender.posZ + z * 2 - 1);
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos())
&& setOfPosToRender.contains(adjPos))
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos()))
adjData[1][z] = lodDim.getData(adjPos);
}
}*/
LodConfig.CLIENT.lodTemplate.get().template.addLodToBuffer(currentBuffer, playerBlockPos, lodData, adjData,
posToRender, renderer.debugging);
@@ -24,6 +24,7 @@ import java.util.concurrent.Executors;
import com.seibel.lod.enums.DistanceGenerationMode;
import com.seibel.lod.enums.LodDetail;
import com.seibel.lod.handlers.LodConfig;
import com.seibel.lod.objects.DataPoint;
import com.seibel.lod.objects.LevelPos.LevelPos;
import com.seibel.lod.objects.LodDimension;
import com.seibel.lod.objects.LodWorld;
@@ -152,7 +153,7 @@ public class LodBuilder
short[] color;
short height;
short depth;
LevelPos levelPos = new LevelPos();
LevelPos levelPos = new LevelPos((byte) 0,0,0);
short[] data;
for (int i = 0; i < detail.dataPointLengthCount * detail.dataPointLengthCount; i++)
@@ -178,7 +179,7 @@ public class LodBuilder
chunk.getPos().x * 16 + startX,
chunk.getPos().z * 16 + startZ);
levelPos.convert(detail.detailLevel);
data = new short[]{height, depth, color[0], color[1], color[2]};
data = DataPoint.createDataPoint(height, depth, color[0], color[1], color[2]);
lodDim.addData(levelPos,
data,
config.distanceGenerationMode,
@@ -385,9 +386,9 @@ public class LodBuilder
colorInt = getColorForBlock(x, z, blockState, biome);
}
red += (colorInt)&0xFF;;
red += (colorInt>>16)&0xFF;
green += (colorInt>>8)&0xFF;
blue += (colorInt>>16)&0xFF;
blue += (colorInt)&0xFF;
numbOfBlocks++;
@@ -87,7 +87,7 @@ public class LevelPos implements Cloneable, ImmutableLevelPos, MutableLevelPos
{
int width = 1 << (LodUtil.REGION_DETAIL_LEVEL - detailLevel);
posX = Math.floorMod(posX, width);
posX = Math.floorMod(posZ, width);
posZ = Math.floorMod(posZ, width);
}
/**
@@ -106,7 +106,7 @@ public class LevelPos implements Cloneable, ImmutableLevelPos, MutableLevelPos
{
detailLevel = newDetailLevel;
posX = newPosX;
posX = newPosZ;
posZ = newPosZ;
}
public RegionPos getRegionPos()
@@ -413,7 +413,7 @@ public class LodDimension
LodRegion region = getRegion(levelPos);
boolean nodeAdded = region.setData(levelPos, lodDataPoint, generationMode.complexity);
boolean nodeAdded = region.addData(levelPos, lodDataPoint, generationMode.complexity);
// only save valid LODs to disk
if (!dontSave && fileHandler != null)
{
@@ -128,7 +128,7 @@ public class LodRegion implements Serializable
* @param generationType
* @return
*/
public boolean setData(LevelPos levelPos, short[] dataPoint, byte generationType)
public boolean addData(LevelPos levelPos, short[] dataPoint, byte generationType)
{
levelPos.performRegionModule();
if ((this.generationType[levelPos.detailLevel][levelPos.posX][levelPos.posZ] == 0) || (generationType >= this.generationType[levelPos.detailLevel][levelPos.posX][levelPos.posZ]))
@@ -138,11 +138,11 @@ public class LodRegion implements Serializable
if (this.dataExistence[levelPos.detailLevel][levelPos.posX][levelPos.posZ]) numberOfPoints++;
//add the node data
this.height[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = dataPoint[0];
this.depth[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = dataPoint[1];
this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][0] = (byte) (dataPoint[2] - 128);
this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][1] = (byte) (dataPoint[3] - 128);
this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][2] = (byte) (dataPoint[4] - 128);
this.height[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = DataPoint.getHeight(dataPoint);
this.depth[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = DataPoint.getDepth(dataPoint);
this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][0] = (byte) (DataPoint.getRed(dataPoint) - 128);
this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][1] = (byte) (DataPoint.getGreen(dataPoint) - 128);
this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][2] = (byte) (DataPoint.getBlue(dataPoint) - 128);
this.generationType[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = generationType;
this.dataExistence[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = true;
return true;