HexMeshNoise class

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

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

implements: NoiseFunction

Поля (46)

МодификаторыТипИмя
final IIntCondition density
int var10
int var10
double var11
DoubleArray.Double2 var11
DoubleArray.Double2 var11
double var12
double var12
double var13
double var14
double var14
double var16
double var16
int var16
DoubleArray.Double2 var17
double var18
double var18
double var18
double var20
double var20
double var20
double var22
double var22
double var22
double var24
var3
var5
int var7
double var8
int var8
var8
var8
var8
var8
var8
double var9
var9
var9
var9
var9
var9
var9
var9
var9
var9
var9

Методы (8)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("3d not supported")
protected double checkConnectionsdouble checkConnections(int var1, double var2, double var4, int var6, int var7, double var8)
protected double checkDiagonalConnectionsdouble checkDiagonalConnections(int var1, double var2, double var4, int var6, int var7, double var8)
protected double dist2Celldouble dist2Cell(int var1, double var2, double var4, double var6, double var8, double var10, double var12, int var14, int var15)
if if(this.linesZ)
if if(var9 < this.thicknessSquared)
if if(this.linesX)
if if(this.linesY)

Исходный код

Показать/скрыть
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.HexCellDistanceFunction;
class="kw">import com.hypixel.hytale.procedurallib.logic.cell.jitter.CellJitter;

class="kw">public class HexMeshNoise class="kw">implements NoiseFunction {
   class="kw">protected class="kw">final IIntCondition density;
   class="kw">protected class="kw">final double thickness;
   class="kw">protected class="kw">final double thicknessSquared;
   class="kw">protected class="kw">final CellJitter jitter;
   class="kw">protected class="kw">final boolean linesX;
   class="kw">protected class="kw">final boolean linesY;
   class="kw">protected class="kw">final boolean linesZ;

   class="kw">public HexMeshNoise(IIntCondition var1, double var2, CellJitter var4, boolean var5, boolean var6, boolean var7) {
      double var8 = HexCellDistanceFunction.DISTANCE_FUNCTION.scale(var2);
      this.density = var1;
      this.thickness = var8;
      this.thicknessSquared = var8 * var8;
      this.jitter = var4;
      this.linesX = var5;
      this.linesY = var6;
      this.linesZ = var7;
   }

   @Override
   class="kw">public double get(int var1, int var2, double var3, double var5) {
      var3 = HexCellDistanceFunction.DISTANCE_FUNCTION.scale(var3);
      var5 = HexCellDistanceFunction.DISTANCE_FUNCTION.scale(var5);
      int var7 = HexCellDistanceFunction.toGridX(var3, var5);
      int var8 = HexCellDistanceFunction.toGridY(var3, var5);
      double var9 = this.thicknessSquared;
      var9 = this.checkConnections(var2, var3, var5, var7 - 1, var8 - 1, var9);
      var9 = this.checkConnections(var2, var3, var5, var7 - 1, var8 + 0, var9);
      var9 = this.checkConnections(var2, var3, var5, var7 + 1, var8 + 0, var9);
      var9 = this.checkConnections(var2, var3, var5, var7 + 0, var8 - 1, var9);
      var9 = this.checkConnections(var2, var3, var5, var7 + 0, var8 + 1, var9);
      if (this.linesZ) {
         var9 = this.checkDiagonalConnections(var2, var3, var5, var7 + 0, var8 + 0, var9);
         var9 = this.checkDiagonalConnections(var2, var3, var5, var7 + 0, var8 - 1, var9);
         var9 = this.checkDiagonalConnections(var2, var3, var5, var7 + 0, var8 + 1, var9);
         var9 = this.checkDiagonalConnections(var2, var3, var5, var7 - 1, var8 + 0, var9);
         var9 = this.checkDiagonalConnections(var2, var3, var5, var7 - 1, var8 - 1, var9);
      }

      if (var9 < this.thicknessSquared) {
         double var11 = Math.sqrt(var9);
         double var13 = var11 / this.thickness;
         class="kw">return var13 * 2.0 - 1.0;
      } else {
         class="kw">return 1.0;
      }
   }

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

   class="kw">protected double checkConnections(int var1, double var2, double var4, int var6, int var7, double var8) {
      int var10 = HexCellDistanceFunction.getHash(var1, var6, var7);
      if (!this.density.eval(var10)) {
         class="kw">return var8;
      }

      DoubleArray.Double2 var11 = HexCellDistanceFunction.HEX_CELL_2D[var10 & 0xFF];
      double var12 = this.jitter.getPointX(var6, var11);
      double var14 = this.jitter.getPointY(var7, var11);
      double var16 = HexCellDistanceFunction.toHexX(var12, var14);
      double var18 = HexCellDistanceFunction.toHexY(var12, var14);
      double var20 = var2 - var16;
      double var22 = var4 - var18;
      if (this.linesX) {
         var8 = Math.min(var8, this.dist2Cell(var1, var2, var4, var20, var22, var16, var18, var6 - 1, var7));
         var8 = Math.min(var8, this.dist2Cell(var1, var2, var4, var20, var22, var16, var18, var6 + 1, var7));
      }

      if (this.linesY) {
         var8 = Math.min(var8, this.dist2Cell(var1, var2, var4, var20, var22, var16, var18, var6, var7 - 1));
         var8 = Math.min(var8, this.dist2Cell(var1, var2, var4, var20, var22, var16, var18, var6, var7 + 1));
      }

      class="kw">return var8;
   }

   class="kw">protected double checkDiagonalConnections(int var1, double var2, double var4, int var6, int var7, double var8) {
      int var10 = HexCellDistanceFunction.getHash(var1, var6, var7);
      if (!this.density.eval(var10)) {
         class="kw">return var8;
      }

      DoubleArray.Double2 var11 = HexCellDistanceFunction.HEX_CELL_2D[var10 & 0xFF];
      double var12 = this.jitter.getPointX(var6, var11);
      double var14 = this.jitter.getPointY(var7, var11);
      double var16 = HexCellDistanceFunction.toHexX(var12, var14);
      double var18 = HexCellDistanceFunction.toHexY(var12, var14);
      double var20 = var2 - var16;
      double var22 = var4 - var18;
      var8 = Math.min(var8, this.dist2Cell(var1, var2, var4, var20, var22, var16, var18, var6 - 1, var7 + 1));
      class="kw">return Math.min(var8, this.dist2Cell(var1, var2, var4, var20, var22, var16, var18, var6 + 1, var7 - 1));
   }

   class="kw">protected double dist2Cell(int var1, double var2, double var4, double var6, double var8, double var10, double var12, int var14, int var15) {
      int var16 = HexCellDistanceFunction.getHash(var1, var14, var15);
      if (!this.density.eval(var16)) {
         class="kw">return Double.MAX_VALUE;
      }

      DoubleArray.Double2 var17 = HexCellDistanceFunction.HEX_CELL_2D[var16 & 0xFF];
      double var18 = this.jitter.getPointX(var14, var17);
      double var20 = this.jitter.getPointY(var15, var17);
      double var22 = HexCellDistanceFunction.toHexX(var18, var20);
      double var24 = HexCellDistanceFunction.toHexY(var18, var20);
      class="kw">return MathUtil.distanceToLineSq(var2, var4, var10, var12, var22, var24, var6, var8, var22 - var10, var24 - var12);
   }
}