fixed LevelPos and colors
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user