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;
      }
   }
}