BranchNoise class

Пакет: com.hypixel.hytale.procedurallib.logic

Файл: com/hypixel/hytale/procedurallib/logic/BranchNoise.java

implements: NoiseFunction

Поля (17)

МодификаторыТипИмя
final CellDistanceFunction parentFunction
double var10
double var12
double var14
double var14
int var16
int var17
double var18
var2
var2
var4
var4
ResultBuffer.ResultBuffer2d var6
ResultBuffer.ResultBuffer2d var7
int var7
double var8
int var8

Методы (5)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException()
protected double getLineValuedouble getLineValue(int var1, double var2, double var4, int var6, double var7, double var9, double var11, @Nonnull ResultBuffer.ResultBuffer2d var13)
if if(var14 == 0.0)
static double toOutputRangedouble toOutputRange(double var0)
abstract return toOutputRangereturn toOutputRange(var14)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.procedurallib.logic;

class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.procedurallib.NoiseFunction;
class="kw">import com.hypixel.hytale.procedurallib.condition.IIntCondition;
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.NoiseFormulaProperty;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BranchNoise class="kw">implements NoiseFunction {
   class="kw">protected class="kw">final CellDistanceFunction parentFunction;
   class="kw">protected class="kw">final PointEvaluator parentEvaluator;
   class="kw">protected class="kw">final double parentValue;
   class="kw">protected class="kw">final double emptyValue;
   class="kw">protected class="kw">final IDoubleRange parentFade;
   class="kw">protected class="kw">final IIntCondition parentDensity;
   class="kw">protected class="kw">final DistanceNoise.Distance2Function distance2Function;
   class="kw">protected class="kw">final NoiseFormulaProperty.NoiseFormula.Formula noiseFormula;
   class="kw">protected class="kw">final CellDistanceFunction lineFunction;
   class="kw">protected class="kw">final PointEvaluator lineEvaluator;
   class="kw">protected class="kw">final double lineScale;
   class="kw">protected class="kw">final IDoubleRange lineThickness;

   class="kw">public BranchNoise(
      CellDistanceFunction var1,
      PointEvaluator var2,
      double var3,
      IDoubleRange var5,
      IIntCondition var6,
      DistanceNoise.Distance2Function var7,
      NoiseFormulaProperty.NoiseFormula.Formula var8,
      CellDistanceFunction var9,
      PointEvaluator var10,
      double var11,
      IDoubleRange var13
   ) {
      this.parentFunction = var1;
      this.parentEvaluator = var2;
      this.parentValue = var3;
      this.emptyValue = toOutputRange(var3);
      this.parentFade = var5;
      this.parentDensity = var6;
      this.distance2Function = var7;
      this.noiseFormula = var8;
      this.lineFunction = var9;
      this.lineEvaluator = var10;
      this.lineScale = var11;
      this.lineThickness = var13;
   }

   @Override
   class="kw">public double get(int var1, int var2, double var3, double var5) {
      ResultBuffer.ResultBuffer2d var7 = this.getParentNoise(var2, var3, var5);
      if (!this.parentDensity.eval(var7.hash)) {
         class="kw">return this.emptyValue;
      }

      double var8 = this.noiseFormula.eval(this.distance2Function.eval(var7.distance, var7.distance2));
      double var10 = this.getLineValue(var2, var3, var5, var7.hash, var7.x, var7.y, var8, var7);
      double var12 = this.parentFade.getValue(var8);
      double var14 = MathUtil.lerp(this.parentValue, var10, var12);
      class="kw">return toOutputRange(var14);
   }

   @Override
   class="kw">public double get(int var1, int var2, double var3, double var5, double var7) {
      throw new UnsupportedOperationException();
   }

   @Nonnull
   class="kw">protected ResultBuffer.ResultBuffer2d localBuffer2d() {
      class="kw">return ResultBuffer.buffer2d;
   }

   @Nonnull
   class="kw">protected ResultBuffer.ResultBuffer2d getParentNoise(int var1, double var2, double var4) {
      ResultBuffer.ResultBuffer2d var6 = this.localBuffer2d();
      var6.distance = Double.POSITIVE_INFINITY;
      var6.distance2 = Double.POSITIVE_INFINITY;
      var2 = this.parentFunction.scale(var2);
      var4 = this.parentFunction.scale(var4);
      int var7 = this.parentFunction.getCellX(var2, var4);
      int var8 = this.parentFunction.getCellY(var2, var4);
      this.parentFunction.transition2D(var1, var2, var4, var7, var8, var6, this.parentEvaluator);
      class="kw">return var6;
   }

   class="kw">protected double getLineValue(
      int var1, double var2, double var4, int var6, double var7, double var9, double var11, @Nonnull ResultBuffer.ResultBuffer2d var13
   ) {
      double var14 = this.lineThickness.getValue(var11);
      if (var14 == 0.0) {
         class="kw">return 1.0;
      }

      var13.distance = Double.POSITIVE_INFINITY;
      var13.x2 = var7;
      var13.y2 = var9;
      var13.ix2 = var6;
      var13.distance2 = var14;
      var2 *= this.lineScale;
      var4 *= this.lineScale;
      var2 = this.lineFunction.scale(var2);
      var4 = this.lineFunction.scale(var4);
      int var16 = this.lineFunction.getCellX(var2, var4);
      int var17 = this.lineFunction.getCellY(var2, var4);
      this.lineFunction.nearest2D(var1, var2, var4, var16, var17, var13, this.lineEvaluator);
      double var18 = var13.distance;
      class="kw">return var18 >= var14 * var14 ? 1.0 : Math.sqrt(var18) / var14;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "BranchNoise{parentFunction="
         + this.parentFunction
         + ", parentEvaluator="
         + this.parentEvaluator
         + ", parentValue="
         + this.parentValue
         + ", parentFade="
         + this.parentFade
         + ", distance2Function="
         + this.distance2Function
         + ", noiseFormula="
         + this.noiseFormula
         + ", lineFunction="
         + this.lineFunction
         + ", lineEvaluator="
         + this.lineEvaluator
         + ", lineScale="
         + this.lineScale
         + ", lineThickness="
         + this.lineThickness
         + "}";
   }

   class="kw">protected class="kw">static double toOutputRange(double var0) {
      class="kw">return 2.0 * var0 - 1.0;
   }
}