98 lines
2.8 KiB
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;
|
|
}
|
|
}
|
|
}
|