fix to the Rendering holes
This commit is contained in:
@@ -21,6 +21,7 @@ import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import com.seibel.lod.objects.DataPoint;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.seibel.lod.handlers.LodConfig;
|
||||
@@ -154,7 +155,7 @@ public class LodBufferBuilder
|
||||
// =====================//
|
||||
// RENDERING PART //
|
||||
// =====================//
|
||||
|
||||
ConcurrentMap<LevelPos, List<Short>> adjMap = new ConcurrentSkipListMap<>();
|
||||
|
||||
for (int xRegion = 0; xRegion < lodDim.regions.length; xRegion++)
|
||||
{
|
||||
@@ -173,7 +174,7 @@ public class LodBufferBuilder
|
||||
return;
|
||||
Callable<Boolean> dataToRenderThread = () ->
|
||||
{
|
||||
SortedSet<LevelPos> nodeToRender = new TreeSet();
|
||||
Set<LevelPos> nodeToRender = new HashSet<>();
|
||||
lodDim.getDataToRender(
|
||||
nodeToRender,
|
||||
regionPos,
|
||||
@@ -193,6 +194,7 @@ public class LodBufferBuilder
|
||||
|
||||
try
|
||||
{
|
||||
boolean disableFix = false;
|
||||
if (lodDim.doesDataExist(posToRender.clone()))
|
||||
{
|
||||
short[] lodData = lodDim.getData(posToRender);
|
||||
@@ -200,14 +202,16 @@ public class LodBufferBuilder
|
||||
for (int x : new int[]{0, 1})
|
||||
{
|
||||
adjPos.changeParameters(posToRender.detailLevel, posToRender.posX + x * 2 - 1, posToRender.posZ);
|
||||
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos()))
|
||||
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos())
|
||||
&& (nodeToRender.contains(adjPos) || disableFix))
|
||||
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()))
|
||||
if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos())
|
||||
&& (nodeToRender.contains(adjPos) || disableFix))
|
||||
adjData[1][z] = lodDim.getData(adjPos);
|
||||
}
|
||||
LodConfig.CLIENT.lodTemplate.get().template.addLodToBuffer(currentBuffer, playerBlockPos, lodData, adjData,
|
||||
@@ -265,11 +269,14 @@ public class LodBufferBuilder
|
||||
|
||||
// mark that the buildable buffers as ready to swap
|
||||
switchVbos = true;
|
||||
} catch (Exception e)
|
||||
} catch (
|
||||
Exception e)
|
||||
|
||||
{
|
||||
ClientProxy.LOGGER.warn("\"LodNodeBufferBuilder.generateLodBuffersAsync\" ran into trouble: ");
|
||||
e.printStackTrace();
|
||||
} finally
|
||||
|
||||
{
|
||||
// regardless of if we successfully created the buffers
|
||||
// we are done generating.
|
||||
@@ -290,9 +297,9 @@ public class LodBufferBuilder
|
||||
}
|
||||
|
||||
|
||||
//===============================//
|
||||
// BufferBuilder related methods //
|
||||
//===============================//
|
||||
//===============================//
|
||||
// BufferBuilder related methods //
|
||||
//===============================//
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -522,7 +522,7 @@ public class LodDimension
|
||||
*
|
||||
* @return list of nodes
|
||||
*/
|
||||
public void getDataToRender(SortedSet<LevelPos> dataToRender, RegionPos regionPos, int playerPosX, int playerPosZ)
|
||||
public void getDataToRender(Set<LevelPos> dataToRender, RegionPos regionPos, int playerPosX, int playerPosZ)
|
||||
{
|
||||
LevelPos regionLevelPos = new LevelPos(LodUtil.REGION_DETAIL_LEVEL, regionPos.x, regionPos.z);
|
||||
try
|
||||
|
||||
@@ -304,7 +304,7 @@ public class LodRegion implements Serializable
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public void getDataToRender(SortedSet<LevelPos> dataToRender, int playerPosX, int playerPosZ)
|
||||
public void getDataToRender(Set<LevelPos> dataToRender, int playerPosX, int playerPosZ)
|
||||
{
|
||||
LevelPos levelPos = new LevelPos(LodUtil.REGION_DETAIL_LEVEL, 0, 0);
|
||||
getDataToRender(dataToRender, levelPos, playerPosX, playerPosZ);
|
||||
@@ -313,7 +313,7 @@ public class LodRegion implements Serializable
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
private void getDataToRender(SortedSet<LevelPos> dataToRender, LevelPos levelPos, int playerPosX, int playerPosZ)
|
||||
private void getDataToRender(Set<LevelPos> dataToRender, LevelPos levelPos, int playerPosX, int playerPosZ)
|
||||
{
|
||||
int size = 1 << (LodUtil.REGION_DETAIL_LEVEL - levelPos.detailLevel);
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ public class LodRenderer
|
||||
//===========================//
|
||||
|
||||
// set the required open GL settings
|
||||
GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL);
|
||||
GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE);
|
||||
//GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE);
|
||||
//GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
|
||||
Reference in New Issue
Block a user