HeightThresholdInterpolator class
Пакет: com.hypixel.hytale.server.worldgen.chunk
Файл: com/hypixel/hytale/server/worldgen/chunk/HeightThresholdInterpolator.java
Поля (13)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
MAX_RADIUS |
|
InterpolatedBiomeCountList |
var10 |
|
ZoneBiomeResult |
var10 |
|
InterpolatedBiomeCountList.BiomeCountResult |
var11 |
|
ChunkGenerator |
var2 |
|
int |
var3 |
|
ZoneBiomeResult |
var4 |
|
int |
var5 |
|
int |
var5 |
|
CoreDataCacheEntry |
var5 |
|
int |
var6 |
|
CoreDataCacheEntry |
var9 |
|
int |
var9 |
Методы (20)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var4 = this.size + this.radius; var3 < var4; var3++) |
|
|
for for(int var6 = this.size + this.radius; var5 < var6; var5++) |
|
|
for for(int cxx = 0; cxx < this.size; cxx++) |
|
|
for for(int var8 = 0; var8 < this.size; var8++) |
|
|
for for(int var7 = -var5; var7 <= var5; var7++) |
|
|
for for(int var8 = -var5; var8 <= var5; var8++) |
public |
void |
generateInterpolatedBiomeCountAtvoid generateInterpolatedBiomeCountAt(int var1, int var2, @Nonnull InterpolatedBiomeCountList var3) |
public |
double |
getHeightNoisedouble getHeightNoise(int var1, int var2) |
public |
float |
getHeightThresholdfloat getHeightThreshold(int var1, int var2, int var3, int var4) |
public |
int |
getHighestNonZeroint getHighestNonZero(int var1, int var2) |
public |
int |
getLowestNonOneint getLowestNonOne(int var1, int var2) |
|
|
if if(var9.biomeCountList == null) |
|
|
if if(var9.heightNoise == Double.NEGATIVE_INFINITY) |
|
|
if if(var7 != 0 || var8 != 0) |
|
|
if if(var9 <= var6) |
protected |
int |
indexLocalint indexLocal(int var1, int var2) |
private |
float |
interpolateHeightThresholdfloat interpolateHeightThreshold(int var1, int var2, int var3, int var4) |
protected |
void |
setTableEntryvoid setTableEntry(int var1, int var2, CoreDataCacheEntry var3) |
protected |
CoreDataCacheEntry |
tableEntryCoreDataCacheEntry tableEntry(int var1, int var2) |
protected |
ZoneBiomeResult |
zoneBiomeResultZoneBiomeResult zoneBiomeResult(int var1, int var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.chunk;
class="kw">import com.hypixel.hytale.server.worldgen.cache.CoreDataCacheEntry;
class="kw">import com.hypixel.hytale.server.worldgen.cache.InterpolatedBiomeCountList;
class="kw">import javax.annotation.Nonnull;
class="kw">public class HeightThresholdInterpolator {
class="kw">public class="kw">static class="kw">final int MAX_RADIUS = 5;
class="kw">public class="kw">static class="kw">final int MAX_RADIUS2 = 25;
class="kw">private class="kw">final ChunkGeneratorExecution execution;
@Nonnull
class="kw">private class="kw">final CoreDataCacheEntry[] entries;
class="kw">private class="kw">final int radius;
class="kw">private class="kw">final int size;
class="kw">private class="kw">final int totalSize;
class="kw">public HeightThresholdInterpolator(ChunkGeneratorExecution var1) {
this.execution = var1;
this.radius = 5;
this.size = 32;
this.totalSize = this.size + 2 * this.radius;
this.entries = new CoreDataCacheEntry[this.totalSize * this.totalSize];
}
@Nonnull
class="kw">public CoreDataCacheEntry[] getEntries() {
class="kw">return this.entries;
}
@Nonnull
class="kw">public HeightThresholdInterpolator populate(int var1) {
ChunkGenerator var2 = this.execution.getChunkGenerator();
int var3 = -this.radius;
for (int var4 = this.size + this.radius; var3 < var4; var3++) {
int var5 = -this.radius;
for (int var6 = this.size + this.radius; var5 < var6; var5++) {
this.setTableEntry(var3, var5, var2.getCoreData(var1, this.execution.globalX(var3), this.execution.globalZ(var5)));
}
}
for (int cxx = 0; cxx < this.size; cxx++) {
for (int var8 = 0; var8 < this.size; var8++) {
CoreDataCacheEntry var9 = this.tableEntry(cxx, var8);
if (var9.biomeCountList == null) {
InterpolatedBiomeCountList var10 = new InterpolatedBiomeCountList();
this.generateInterpolatedBiomeCountAt(cxx, var8, var10);
var9.biomeCountList = var10;
}
if (var9.heightNoise == Double.NEGATIVE_INFINITY) {
var9.heightNoise = var2.generateInterpolatedHeightNoise(var9.biomeCountList);
}
}
}
class="kw">return this;
}
class="kw">public void generateInterpolatedBiomeCountAt(int var1, int var2, @Nonnull InterpolatedBiomeCountList var3) {
ZoneBiomeResult var4 = this.tableEntry(var1, var2).zoneBiomeResult;
var3.setCenter(var4);
int var5 = var4.getBiome().getInterpolation().getRadius();
int var6 = var5 * var5;
for (int var7 = -var5; var7 <= var5; var7++) {
for (int var8 = -var5; var8 <= var5; var8++) {
if (var7 != 0 || var8 != 0) {
int var9 = var7 * var7 + var8 * var8;
if (var9 <= var6) {
ZoneBiomeResult var10 = this.tableEntry(var1 + var7, var2 + var8).zoneBiomeResult;
var3.add(var10, var9);
}
}
}
}
if (var3.getBiomeIds().size() == 1) {
InterpolatedBiomeCountList.BiomeCountResult var11 = var3.get(var4.getBiome());
var11.heightNoise = var4.heightmapNoise;
var11.count = 1;
}
}
class="kw">public double getHeightNoise(int var1, int var2) {
class="kw">return this.tableEntry(var1, var2).heightNoise;
}
class="kw">public float getHeightThreshold(int var1, int var2, int var3, int var4) {
class="kw">return this.interpolateHeightThreshold(var1, var2, var3, var4);
}
class="kw">private float interpolateHeightThreshold(int var1, int var2, int var3, int var4) {
CoreDataCacheEntry var5 = this.tableEntry(this.execution.localX(var2), this.execution.localZ(var3));
class="kw">return ChunkGenerator.generateInterpolatedThreshold(var1, var2, var3, var4, var5.biomeCountList);
}
class="kw">protected CoreDataCacheEntry tableEntry(int var1, int var2) {
class="kw">return this.entries[this.indexLocal(var1, var2)];
}
class="kw">protected void setTableEntry(int var1, int var2, CoreDataCacheEntry var3) {
this.entries[this.indexLocal(var1, var2)] = var3;
}
class="kw">protected ZoneBiomeResult zoneBiomeResult(int var1, int var2) {
class="kw">return this.tableEntry(var1, var2).zoneBiomeResult;
}
class="kw">public int getLowestNonOne(int var1, int var2) {
class="kw">return this.execution.getChunkGenerator().generateLowestThresholdDependent(this.tableEntry(var1, var2).biomeCountList);
}
class="kw">public int getHighestNonZero(int var1, int var2) {
class="kw">return this.execution.getChunkGenerator().generateHighestThresholdDependent(this.tableEntry(var1, var2).biomeCountList);
}
class="kw">protected int indexLocal(int var1, int var2) {
class="kw">return (var1 + this.radius) * this.totalSize + var2 + this.radius;
}
}