hytale-server/com/hypixel/hytale/server/worldgen/container/FadeContainer.java

98 lines
2.8 KiB
Java

package com.hypixel.hytale.server.worldgen.container;
import com.hypixel.hytale.server.worldgen.zone.ZoneGeneratorResult;
import javax.annotation.Nonnull;
public class FadeContainer {
public static final double NO_FADE_HEIGHTMAP = Double.NEGATIVE_INFINITY;
protected final double maskFadeStart;
protected final double maskFadeLength;
protected final double maskFadeSum;
protected final double terrainFadeStart;
protected final double terrainFadeLength;
protected final double terrainFadeSum;
protected final double fadeHeightmap;
public FadeContainer(double maskFadeStart, double maskFadeLength, double terrainFadeStart, double terrainFadeLength, double fadeHeightmap) {
this.maskFadeStart = maskFadeStart;
this.maskFadeLength = maskFadeLength;
this.maskFadeSum = maskFadeStart + maskFadeLength;
this.terrainFadeStart = terrainFadeStart;
this.terrainFadeLength = terrainFadeLength;
this.terrainFadeSum = terrainFadeStart + terrainFadeLength;
this.fadeHeightmap = fadeHeightmap;
}
public double getMaskFadeStart() {
return this.maskFadeStart;
}
public double getMaskFadeLength() {
return this.maskFadeLength;
}
public double getMaskFadeSum() {
return this.maskFadeSum;
}
public double getHeightFadeStart() {
return this.terrainFadeStart;
}
public double getHeightFadeLength() {
return this.terrainFadeLength;
}
public double getHeightFadeSum() {
return this.terrainFadeSum;
}
public double getFadeHeightmap() {
return this.fadeHeightmap;
}
public double getMaskFactor(@Nonnull ZoneGeneratorResult result) {
return this.getFactor(result, this.maskFadeStart, this.maskFadeLength);
}
public double getTerrainFactor(@Nonnull ZoneGeneratorResult result) {
return this.getFactor(result, this.terrainFadeStart, this.terrainFadeLength);
}
public double getFactor(@Nonnull ZoneGeneratorResult result, double distanceFromBorder, double gradientWidth) {
return 1.0 - limit((result.getBorderDistance() - distanceFromBorder) / gradientWidth);
}
public boolean shouldFade() {
return this.fadeHeightmap != Double.NEGATIVE_INFINITY;
}
@Nonnull
@Override
public String toString() {
return "FadeContainer{maskFadeStart="
+ this.maskFadeStart
+ ", maskFadeLength="
+ this.maskFadeLength
+ ", maskFadeSum="
+ this.maskFadeSum
+ ", terrainFadeStart="
+ this.terrainFadeStart
+ ", terrainFadeLength="
+ this.terrainFadeLength
+ ", terrainFadeSum="
+ this.terrainFadeSum
+ ", fadeHeightmap="
+ this.fadeHeightmap
+ "}";
}
private static double limit(double d) {
if (d < 0.0) {
return 0.0;
} else {
return d > 1.0 ? 1.0 : d;
}
}
}