small fixes to tree generator new tree cutter

This commit is contained in:
Leonardo
2021-08-24 01:54:01 +02:00
parent bbf99ed145
commit bd305a0269
4 changed files with 43 additions and 37 deletions
@@ -315,8 +315,6 @@ public class LodDimension
LevelPos levelPos;
LodRegion region;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("cutting tree : \n");
for (int x = 0; x < regions.length; x++)
{
for (int z = 0; z < regions.length; z++)
@@ -331,10 +329,8 @@ public class LodDimension
if(DetailDistanceUtil.getDistanceCut(index + 1) > levelPos.minDistance(playerPosX, playerPosZ)){
region = regions[x][z];
byte cutDetailLevel = (byte) (DetailDistanceUtil.getCutLodDetail(index).detailLevel);
byte cutDetailLevel = DetailDistanceUtil.getCutLodDetail(index).detailLevel;
stringBuilder.append(cutDetailLevel);
stringBuilder.append("\t");
if(region != null && cutDetailLevel > 0)
{
region.cutTree(cutDetailLevel);
@@ -344,9 +340,7 @@ public class LodDimension
}
}
}
stringBuilder.append("\n");
}
System.out.println(stringBuilder);
}
/**
@@ -359,8 +353,6 @@ public class LodDimension
RegionPos regionPos;
LodRegion region;
byte targetDetailLevel;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("generating tree : \n");
for (int x = 0; x < regions.length; x++)
{
for (int z = 0; z < regions.length; z++)
@@ -377,43 +369,31 @@ public class LodDimension
region = regions[x][z];
//We require that the region we are checking is loaded with at least this level
targetDetailLevel = (byte) (DetailDistanceUtil.getLodDetail(index).detailLevel);
targetDetailLevel = DetailDistanceUtil.getLodDetail(index).detailLevel;
if (region == null)
{
//First case, region has to be initialized
//We check if there is a file at the target level
region = getRegionFromFile(regionPos, targetDetailLevel);
regions[x][z] = getRegionFromFile(regionPos, targetDetailLevel);
//if there is no file we initialize the region
if (region == null)
if (regions[x][z] == null)
{
regions[x][z] = new LodRegion(targetDetailLevel, regionPos);
stringBuilder.append(targetDetailLevel);
stringBuilder.append("i");
stringBuilder.append("\t");
}else{
stringBuilder.append(targetDetailLevel);
stringBuilder.append("l");
stringBuilder.append("\t");
}
}else if(region.getMinDetailLevel() > targetDetailLevel){
//Second case, region has been initialized but at a higher level
//We expand the region by introducing the missing layer
stringBuilder.append(targetDetailLevel);
stringBuilder.append("e");
stringBuilder.append("\t");
region.expand(targetDetailLevel);
}
break;
}
}
}
stringBuilder.append("\n");
}
System.out.println(stringBuilder);
}
/**
@@ -746,11 +726,32 @@ public class LodDimension
@Override
public String toString()
{
String s = "";
int regionX;
int regionZ;
LevelPos levelPos;
LodRegion region;
s += "dim: " + dimension.toString() + "\t";
s += "(" + center.x + "," + center.z + ")";
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Dimension : \n");
for (int x = 0; x < regions.length; x++)
{
for (int z = 0; z < regions.length; z++)
{
region = regions[x][z];
if(region == null)
{
stringBuilder.append("n");
stringBuilder.append("\t");
return s;
}else
{
stringBuilder.append(region.getMinDetailLevel());
stringBuilder.append("\t");
}
}
stringBuilder.append("\n");
}
System.out.println(stringBuilder);
return stringBuilder.toString();
}
}
@@ -99,9 +99,14 @@ public class ClientProxy
LodDimension lodDim = lodWorld.getLodDimension(mc.player.level.dimensionType());
if (lodDim == null)
return;
playerMoveEvent(lodDim);
//System.out.println("memory needed " + lodDim.getMinMemoryNeeded() + " byte");
lodDim.treeCutter((int) mc.player.getX(),(int) mc.player.getZ());
lodDim.treeGenerator((int) mc.player.getX(),(int) mc.player.getZ());
System.out.println(lodDim);
// comment out when creating a release
applyConfigOverrides();
@@ -243,7 +248,7 @@ public class ClientProxy
{
lodWorld.saveAllDimensions();
lodDim.move(worldRegionOffset);
//LOGGER.info("offset: " + worldRegionOffset.x + "," + worldRegionOffset.z + "\t center: " + lodDim.getCenterX() + "," + lodDim.getCenterZ());
LOGGER.info("offset: " + worldRegionOffset.x + "," + worldRegionOffset.z + "\t center: " + lodDim.getCenterX() + "," + lodDim.getCenterZ());
}
}
@@ -439,8 +439,8 @@ public class LodRenderer
if (fogQuality == FogQuality.FANCY)
{
RenderSystem.fogStart(farPlaneBlockDistance * 1.5f);
RenderSystem.fogEnd(farPlaneBlockDistance * 2.0f);
RenderSystem.fogStart(farPlaneBlockDistance * 0.9f);
RenderSystem.fogEnd(farPlaneBlockDistance * 1f);
} else if (fogQuality == FogQuality.FAST)
{
// for the far fog of the normal chunks
@@ -6,7 +6,7 @@ import com.seibel.lod.handlers.LodConfig;
public class DetailDistanceUtil
{
private static double genMultiplier = 1.25;
private static double genMultiplier = 1;
private static double cutMultiplier = 1.5;
private static int minDetail = LodConfig.CLIENT.maxGenerationDetail.get().detailLevel;
private static int maxDetail = LodUtil.REGION_DETAIL_LEVEL + 1;
@@ -38,7 +38,6 @@ public class DetailDistanceUtil
LodDetail.SINGLE};
private static LodDetail[] lodDetailsCut = {
LodDetail.FULL,
LodDetail.FULL,
LodDetail.HALF,
LodDetail.QUAD,
@@ -48,13 +47,14 @@ public class DetailDistanceUtil
LodDetail.SINGLE,
LodDetail.SINGLE,
LodDetail.SINGLE,
LodDetail.SINGLE,
LodDetail.SINGLE};
public static int getDistanceRendering(int detail)
{
int distance = 0;
int initial = LodConfig.CLIENT.lodQuality.get() * 256;
if(detail == minDetail)
int initial = LodConfig.CLIENT.lodQuality.get() * 128;
if(detail <= minDetail)
return minDistance;
if(detail == maxDetail)
return maxDistance;