Grid class
Пакет: com.hypixel.hytale.server.worldgen.climate
Файл: com/hypixel/hytale/server/worldgen/climate/ClimateNoise.java
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public final PointEvaluator |
evaluator |
|
public final CellDistanceFunction |
grid |
|
public final transient double |
invScale |
|
public final double |
scale |
|
public final int |
seedOffset |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
evalpublic void eval(int var1, double var2, double var4, ResultBuffer.ResultBuffer2d var6) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.climate;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.procedurallib.logic.ResultBuffer;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.CellDistanceFunction;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.evaluator.PointEvaluator;
class="kw">import com.hypixel.hytale.procedurallib.property.NoiseProperty;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ClimateNoise {
@Nonnull
class="kw">public class="kw">final ClimateNoise.Grid grid;
@Nonnull
class="kw">public class="kw">final NoiseProperty continent;
@Nonnull
class="kw">public class="kw">final NoiseProperty temperature;
@Nonnull
class="kw">public class="kw">final NoiseProperty intensity;
@Nonnull
class="kw">public class="kw">final ClimateNoise.Thresholds thresholds;
class="kw">public ClimateNoise(
@Nonnull ClimateNoise.Grid var1,
@Nonnull NoiseProperty var2,
@Nonnull NoiseProperty var3,
@Nonnull NoiseProperty var4,
@Nonnull ClimateNoise.Thresholds var5
) {
this.grid = var1;
this.temperature = var3;
this.intensity = var4;
this.continent = var2;
this.thresholds = var5;
}
class="kw">public int generate(int var1, double var2, double var4, @Nonnull ClimateNoise.Buffer var6, @Nonnull ClimateGraph var7) {
this.grid.eval(var1, var2, var4, var6.pos);
double var8 = this.continent.get(var1, var2, var4);
double var10 = this.temperature.get(var1, var6.pos.x, var6.pos.y);
double var12 = this.intensity.get(var1, var6.pos.x, var6.pos.y);
int var14 = var7.indexOf(var10, var12);
var6.continent = var8;
var6.temperature = var10;
var6.intensity = var12;
var6.fade = var7.getFade(var14);
int var15 = var7.getId(var14);
int var16 = getContinentFlags(var8, this.thresholds);
class="kw">return var15 | var16;
}
class="kw">private class="kw">static int getContinentFlags(double var0, @Nonnull ClimateNoise.Thresholds var2) {
boolean var3 = var0 <= var2.landShallowOceanOuter;
boolean var4 = var0 >= var2.islandShallowOceanOuter;
boolean var5 = var0 > var2.land && var0 < var2.island;
boolean var6 = var3 && var0 > var2.landShoreInner || var4 && var0 < var2.islandShoreInner;
int var7 = 0;
if (var5) {
var7 |= Integer.MIN_VALUE;
}
if (var6) {
var7 |= 1073741824;
}
if (var4) {
var7 |= 536870912;
}
class="kw">return var7;
}
class="kw">public class="kw">static class Buffer {
class="kw">public double continent = 0.0;
class="kw">public double temperature = 0.0;
class="kw">public double intensity = 0.0;
class="kw">public double fade = 0.0;
class="kw">public class="kw">final ResultBuffer.ResultBuffer2d pos = new ResultBuffer.ResultBuffer2d();
class="kw">public Buffer() {
}
}
class="kw">public class="kw">static class Grid {
class="kw">public class="kw">final int seedOffset;
class="kw">public class="kw">final double scale;
@Nonnull
class="kw">public class="kw">final PointEvaluator evaluator;
@Nonnull
class="kw">public class="kw">final CellDistanceFunction grid;
class="kw">public class="kw">final class="kw">transient double invScale;
class="kw">public Grid(int var1, double var2, @Nonnull CellDistanceFunction var4, @Nonnull PointEvaluator var5) {
this.seedOffset = var1;
this.scale = var2;
this.evaluator = var5;
this.grid = var4;
this.invScale = 1.0 / var2;
}
class="kw">public void eval(int var1, double var2, double var4, ResultBuffer.ResultBuffer2d var6) {
var2 *= this.scale;
var4 *= this.scale;
var6.distance = Double.MAX_VALUE;
var6.distance2 = Double.MAX_VALUE;
this.grid.nearest2D(var1 + this.seedOffset, var2, var4, MathUtil.floor(var2), MathUtil.floor(var4), var6, this.evaluator);
var6.x = var6.x * this.invScale;
var6.y = var6.y * this.invScale;
}
}
class="kw">public class="kw">static class Thresholds {
class="kw">public class="kw">static class="kw">final double LAND_DEFAULT = 0.5;
class="kw">public class="kw">static class="kw">final double ISLAND_DEFAULT = 0.8;
class="kw">public class="kw">static class="kw">final double BEACH_SIZE_DEFAULT = 0.05;
class="kw">public class="kw">static class="kw">final double SHALLOW_OCEAN_SIZE_DEFAULT = 0.15;
class="kw">public class="kw">final double land;
class="kw">public class="kw">final double island;
class="kw">public class="kw">final double beachSize;
class="kw">public class="kw">final double shallowOceanSize;
class="kw">public class="kw">final class="kw">transient double landShoreInner;
class="kw">public class="kw">final class="kw">transient double islandShoreInner;
class="kw">public class="kw">final class="kw">transient double landShallowOceanOuter;
class="kw">public class="kw">final class="kw">transient double islandShallowOceanOuter;
class="kw">public Thresholds(double var1, double var3, double var5, double var7) {
this.land = var1;
this.island = var3;
this.beachSize = var5;
this.shallowOceanSize = var7;
this.landShoreInner = var1 - var5;
this.islandShoreInner = var3 + var5;
this.landShallowOceanOuter = var1 + var7;
this.islandShallowOceanOuter = var3 - var7 * 0.5;
}
}
}