Files
distant-horizons-sharded/src/main/java/com/seibel/lod/util/DetailUtil.java
T

56 lines
1.8 KiB
Java

package com.seibel.lod.util;
import com.seibel.lod.enums.DistanceGenerationMode;
import com.seibel.lod.handlers.LodConfig;
public class DetailUtil
{
private static double genMultiplier = 1.5;
private static final int maxDetail = LodUtil.REGION_DETAIL_LEVEL + 1;
private static final int minDistance = 0;
private static final int maxDistance = LodConfig.CLIENT.lodChunkRenderDistance.get() * 16;
private static DistanceGenerationMode[] distancesGenerators = {
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE,
DistanceGenerationMode.SURFACE};
public static int getDistanceRendering(int detail)
{
int distance = 0;
int initial = LodConfig.CLIENT.lodQuality.get() * 256;
switch (LodConfig.CLIENT.lodDistanceCalculatorType.get())
{
case LINEAR:
distance = (detail * initial);
break;
case QUADRATIC:
if (detail == 0)
distance = minDistance;
else if(detail == maxDetail)
distance = maxDistance;
else
distance = (int) (Math.pow(2, detail) * initial);
break;
}
return distance;
}
public static int getDistanceGeneration(int detail)
{
return (int) (getDistanceRendering(detail) * genMultiplier);
}
public static DistanceGenerationMode getDistanceGenerationMode(int detail)
{
return distancesGenerators[detail];
}
}