comments and regactor LodDimension

This commit is contained in:
James Seibel
2021-09-27 07:59:55 -05:00
parent a76436b73d
commit 85a0110af6
6 changed files with 355 additions and 342 deletions
@@ -199,11 +199,11 @@ public class LodBufferBuilder
{
for (int zRegion = 0; zRegion < lodDim.getWidth(); zRegion++)
{
if (lodDim.isRegionToRegen(xRegion, zRegion) || fullRegen)
if (lodDim.doesRegionNeedBufferRegen(xRegion, zRegion) || fullRegen)
{
RegionPos regionPos = new RegionPos(
xRegion + lodDim.getCenterX() - Math.floorDiv(lodDim.getWidth(), 2),
zRegion + lodDim.getCenterZ() - Math.floorDiv(lodDim.getWidth(), 2));
xRegion + lodDim.getCenterRegionPosX() - Math.floorDiv(lodDim.getWidth(), 2),
zRegion + lodDim.getCenterRegionPosZ() - Math.floorDiv(lodDim.getWidth(), 2));
// local position in the vbo and bufferBuilder arrays
BufferBuilder currentBuffer = buildableBuffers[xRegion][zRegion];
@@ -449,7 +449,7 @@ public class LodBufferBuilder
{
for (int z = 0; z < buildableBuffers.length; z++)
{
if (fullRegen || lodDim.isRegionToRegen(x, z))
if (fullRegen || lodDim.doesRegionNeedBufferRegen(x, z))
{
// for some reason BufferBuilder.vertexCounts
// isn't reset unless this is called, which can cause
@@ -469,7 +469,7 @@ public class LodBufferBuilder
{
for (int x = 0; x < buildableBuffers.length; x++)
for (int z = 0; z < buildableBuffers.length; z++)
if (buildableBuffers[x][z] != null && buildableBuffers[x][z].building() && (fullRegen || lodDim.isRegionToRegen(x, z)))
if (buildableBuffers[x][z] != null && buildableBuffers[x][z].building() && (fullRegen || lodDim.doesRegionNeedBufferRegen(x, z)))
buildableBuffers[x][z].end();
}
@@ -490,11 +490,11 @@ public class LodBufferBuilder
{
for (int z = 0; z < buildableVbos.length; z++)
{
if (fullRegen || lodDim.isRegionToRegen(x, z))
if (fullRegen || lodDim.doesRegionNeedBufferRegen(x, z))
{
ByteBuffer builderBuffer = buildableBuffers[x][z].popNextBuffer().getSecond();
vboUpload(buildableVbos[x][z], builderBuffer);
lodDim.setRegenByArrayIndex(x, z, false);
lodDim.setRegenRegionBufferByArrayIndex(x, z, false);
}
}
}
@@ -238,10 +238,10 @@ public class LodDimensionFileHandler
{
for (int j = 0; j < lodDimension.getWidth(); j++)
{
if (lodDimension.isRegionToRegen(i,j) && lodDimension.getRegionByArrayIndex(i,j) != null)
if (lodDimension.doesRegionNeedBufferRegen(i,j) && lodDimension.getRegionByArrayIndex(i,j) != null)
{
saveRegionToFile(lodDimension.getRegionByArrayIndex(i,j));
lodDimension.setRegenByArrayIndex(i, j,false);
lodDimension.setRegenRegionBufferByArrayIndex(i, j,false);
}
}
}
File diff suppressed because it is too large Load Diff
@@ -449,6 +449,7 @@ public class LodRegion
}
/**
* TODO what does this do?
* @param detailLevel
*/
public void expand(byte detailLevel)
@@ -128,8 +128,8 @@ public class ClientProxy
viewDistanceChangedEvent();
playerMoveEvent(lodDim);
lodDim.treeCutter((int) mc.getPlayer().getX(), (int) mc.getPlayer().getZ());
lodDim.treeGenerator((int) mc.getPlayer().getX(), (int) mc.getPlayer().getZ());
lodDim.cutRegionNodesAsync((int) mc.getPlayer().getX(), (int) mc.getPlayer().getZ());
lodDim.expandOrLoadRegionsAsync((int) mc.getPlayer().getX(), (int) mc.getPlayer().getZ());
// Note to self:
@@ -313,7 +313,7 @@ public class ClientProxy
{
// make sure the dimension is centered
RegionPos playerRegionPos = new RegionPos(mc.getPlayer().blockPosition());
RegionPos worldRegionOffset = new RegionPos(playerRegionPos.x - lodDim.getCenterX(), playerRegionPos.z - lodDim.getCenterZ());
RegionPos worldRegionOffset = new RegionPos(playerRegionPos.x - lodDim.getCenterRegionPosX(), playerRegionPos.z - lodDim.getCenterRegionPosZ());
if (worldRegionOffset.x != 0 || worldRegionOffset.z != 0)
{
lodWorld.saveAllDimensions();
@@ -287,7 +287,7 @@ public class LodRenderer
{
for (int j = 0; j < vbos.length; j++)
{
RegionPos vboPos = new RegionPos(i + lodDim.getCenterX() - lodDim.getWidth() / 2, j + lodDim.getCenterZ() - lodDim.getWidth() / 2);
RegionPos vboPos = new RegionPos(i + lodDim.getCenterRegionPosX() - lodDim.getWidth() / 2, j + lodDim.getCenterRegionPosZ() - lodDim.getWidth() / 2);
if (cullingDisabled || RenderUtil.isRegionInViewFrustum(renderInfo.getBlockPosition(), cameraDir, vboPos.blockPos()))
{
if ((i > halfWidth - quarterWidth && i < halfWidth + quarterWidth) && (j > halfWidth - quarterWidth && j < halfWidth + quarterWidth))
@@ -821,10 +821,10 @@ public class LodRenderer
// check if there is any newly generated terrain to show
if (newTime - prevChunkTime > LodConfig.CLIENT.buffers.bufferRebuildLodChangeTimeout.get())
{
if (lodDim.regenDimension)
if (lodDim.regenDimensionBuffers)
{
partialRegen = true;
lodDim.regenDimension = false;
lodDim.regenDimensionBuffers = false;
}
prevChunkTime = newTime;
}
@@ -864,7 +864,7 @@ public class LodRenderer
{
vanillaRenderedChunks[xIndex][zIndex] = true;
vanillaRenderedChunksChanged = true;
lodDim.setToRegen(pos.getRegionX(), pos.getRegionZ());
lodDim.markRegionBufferToRegen(pos.getRegionX(), pos.getRegionZ());
}
}
}