Builder class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.noise
Файл: com/hypixel/hytale/builtin/hytalegenerator/noise/SimplexNoiseField.java
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private int |
numberOfOctaves |
|
private double |
octaveAmplitudeMultiplier |
|
private double |
octaveFrequencyMultiplier |
|
private double |
scaleW |
|
private double |
scaleX |
|
private double |
scaleY |
|
private double |
scaleZ |
|
private long |
seed |
|
SimplexNoiseField |
var1 |
Методы (9)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("invalid number") |
|
public SimplexNoiseField |
buildpublic SimplexNoiseField build() |
|
|
if if(var1 <= 0) |
|
public SimplexNoiseField.Builder |
withAmplitudeMultiplierpublic SimplexNoiseField.Builder withAmplitudeMultiplier(double var1) |
|
public SimplexNoiseField.Builder |
withFrequencyMultiplierpublic SimplexNoiseField.Builder withFrequencyMultiplier(double var1) |
|
public SimplexNoiseField.Builder |
withNumberOfOctavespublic SimplexNoiseField.Builder withNumberOfOctaves(int var1) |
|
public SimplexNoiseField.Builder |
withScalepublic SimplexNoiseField.Builder withScale(double var1) |
|
public SimplexNoiseField.Builder |
withScalepublic SimplexNoiseField.Builder withScale(double var1, double var3, double var5, double var7) |
|
public SimplexNoiseField.Builder |
withSeedpublic SimplexNoiseField.Builder withSeed(long var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.noise;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">public class SimplexNoiseField class="kw">extends NoiseField {
class="kw">private class="kw">final long seed;
@Nonnull
class="kw">private class="kw">final double[] offsetX;
@Nonnull
class="kw">private class="kw">final double[] offsetY;
@Nonnull
class="kw">private class="kw">final double[] offsetZ;
@Nonnull
class="kw">private class="kw">final double[] offsetW;
class="kw">private class="kw">final int numberOfOctaves;
@Nonnull
class="kw">private class="kw">final double[] octaveFrequency;
@Nonnull
class="kw">private class="kw">final double[] octaveAmplitude;
class="kw">private class="kw">final double normalizer;
class="kw">public SimplexNoiseField(long var1, double var3, double var5, int var7) {
if (var7 <= 0) {
throw new IllegalArgumentException("octaves can't be smaller than 1");
}
this.seed = var1;
this.numberOfOctaves = var7;
Random var8 = new Random(var1);
this.offsetX = new double[var7];
this.offsetY = new double[var7];
this.offsetZ = new double[var7];
this.offsetW = new double[var7];
for (int var9 = 0; var9 < var7; var9++) {
this.offsetX[var9] = var8.nextDouble() * 256.0;
this.offsetY[var9] = var8.nextDouble() * 256.0;
this.offsetZ[var9] = var8.nextDouble() * 256.0;
this.offsetW[var9] = var8.nextDouble() * 256.0;
}
this.octaveAmplitude = new double[var7];
this.octaveFrequency = new double[var7];
double var16 = 1.0;
double var11 = 1.0;
double var13 = 0.0;
for (int var15 = 0; var15 < var7; var15++) {
this.octaveAmplitude[var15] = var11;
this.octaveFrequency[var15] = var16;
var13 += var11;
var11 *= var3;
var16 *= var5;
}
this.normalizer = 1.0 / var13;
}
@Nonnull
class="kw">public class="kw">static SimplexNoiseField.Builder builder() {
class="kw">return new SimplexNoiseField.Builder();
}
@Override
class="kw">public double valueAt(double var1, double var3, double var5, double var7) {
var1 /= this.scaleX;
var3 /= this.scaleY;
var5 /= this.scaleZ;
var7 /= this.scaleW;
double var9 = 0.0;
double var11 = 0.0;
double var13 = 0.0;
double var15 = 0.0;
double var17 = 0.0;
for (int var19 = 0; var19 < this.numberOfOctaves; var19++) {
var9 = var1 + this.offsetX[var19];
var11 = var3 + this.offsetY[var19];
var13 = var5 + this.offsetZ[var19];
var15 = var7 + this.offsetW[var19];
var17 += Simplex.noise(
var9 * this.octaveFrequency[var19],
var11 * this.octaveFrequency[var19],
var13 * this.octaveFrequency[var19],
var15 * this.octaveFrequency[var19]
)
* this.octaveAmplitude[var19];
}
class="kw">return var17 * this.normalizer;
}
@Override
class="kw">public double valueAt(double var1, double var3, double var5) {
var1 /= this.scaleX;
var3 /= this.scaleY;
var5 /= this.scaleZ;
double var7 = 0.0;
double var9 = 0.0;
double var11 = 0.0;
double var13 = 0.0;
for (int var15 = 0; var15 < this.numberOfOctaves; var15++) {
var7 = var1 + this.offsetX[var15];
var9 = var3 + this.offsetY[var15];
var11 = var5 + this.offsetZ[var15];
var13 += HyperSimplex.noise(var7 * this.octaveFrequency[var15], var9 * this.octaveFrequency[var15], var11 * this.octaveFrequency[var15])
* this.octaveAmplitude[var15];
}
class="kw">return var13 * this.normalizer;
}
@Override
class="kw">public double valueAt(double var1, double var3) {
var1 /= this.scaleX;
var3 /= this.scaleY;
double var5 = 0.0;
double var7 = 0.0;
double var9 = 0.0;
for (int var11 = 0; var11 < this.numberOfOctaves; var11++) {
var5 = var1 + this.offsetX[var11];
var7 = var3 + this.offsetY[var11];
var9 += HyperSimplex.noise(var5 * this.octaveFrequency[var11], var7 * this.octaveFrequency[var11]) * this.octaveAmplitude[var11];
}
class="kw">return var9 * this.normalizer;
}
@Override
class="kw">public double valueAt(double var1) {
var1 /= this.scaleX;
double var3 = 0.0;
double var5 = 0.0;
for (int var7 = 0; var7 < this.numberOfOctaves; var7++) {
var3 = var1 + this.offsetX[var7];
var5 += HyperSimplex.noise(var3 * this.octaveFrequency[var7], 0.0) * this.octaveAmplitude[var7];
}
class="kw">return var5 * this.normalizer;
}
class="kw">public long getSeed() {
class="kw">return this.seed;
}
class="kw">public class="kw">static class Builder {
class="kw">private long seed = 1L;
class="kw">private double octaveAmplitudeMultiplier = 0.5;
class="kw">private double octaveFrequencyMultiplier = 2.0;
class="kw">private int numberOfOctaves = 4;
class="kw">private double scaleX;
class="kw">private double scaleY;
class="kw">private double scaleZ;
class="kw">private double scaleW;
class="kw">private Builder() {
}
@Nonnull
class="kw">public SimplexNoiseField build() {
SimplexNoiseField var1 = new SimplexNoiseField(this.seed, this.octaveAmplitudeMultiplier, this.octaveFrequencyMultiplier, this.numberOfOctaves);
var1.setScale(this.scaleX, this.scaleY, this.scaleZ, this.scaleW);
class="kw">return var1;
}
@Nonnull
class="kw">public SimplexNoiseField.Builder withScale(double var1) {
this.scaleX = var1;
this.scaleY = var1;
this.scaleZ = var1;
this.scaleW = var1;
class="kw">return this;
}
@Nonnull
class="kw">public SimplexNoiseField.Builder withScale(double var1, double var3, double var5, double var7) {
this.scaleX = var1;
this.scaleY = var3;
this.scaleZ = var5;
this.scaleW = var7;
class="kw">return this;
}
@Nonnull
class="kw">public SimplexNoiseField.Builder withNumberOfOctaves(int var1) {
if (var1 <= 0) {
throw new IllegalArgumentException("invalid number");
}
this.numberOfOctaves = var1;
class="kw">return this;
}
@Nonnull
class="kw">public SimplexNoiseField.Builder withFrequencyMultiplier(double var1) {
this.octaveFrequencyMultiplier = var1;
class="kw">return this;
}
@Nonnull
class="kw">public SimplexNoiseField.Builder withAmplitudeMultiplier(double var1) {
this.octaveAmplitudeMultiplier = var1;
class="kw">return this;
}
@Nonnull
class="kw">public SimplexNoiseField.Builder withSeed(long var1) {
this.seed = var1;
class="kw">return this;
}
}
}