MeshNoise class

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

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

implements: NoiseFunction

Поля (51)

МодификаторыТипИмя
final Vector2i[] ADJACENT_CELLS
break
break
break
break
break
break
continue
continue
continue
continue
continue
continue
continue
int var11
int var12
double var13
double var15
int var18
int var19
int var20
int var21
int var22
DoubleArray.Double2 var23
double var24
double var26
double var28
double var30
double var32
double var34
int var40
int var41
int var42
DoubleArray.Double2 var43
double var44
double var46
double var48
double var50
double var52
var52
var52
double var54
double var56
double var58
double var60
double var62
double var64
double var65
double var7
double var9
var9

Методы (14)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("3d not supported")
for for(int var17 = 0; var17 < 8; var17++)
for for(Vector2i var39 : ADJACENT_CELLS)
if if(var13 >= var7 || var15 >= var7)
if if(var13 >= var7)
if if(var13 >= var7 || var15 < 1.0 - var7)
if if(var15 >= var7)
if if(var15 < 1.0 - var7)
if if(var13 < 1.0 - var7 || var15 >= var7)
if if(var13 < 1.0 - var7)
if if(var52 < 0.0)
if if(var62 < var9)
if if(var9 != this.thicknessSquared)
switch switch(var17)

Исходный код

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

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.GridCellDistanceFunction;
class="kw">import org.joml.Vector2i;

class="kw">public class MeshNoise class="kw">implements NoiseFunction {
   class="kw">public class="kw">static class="kw">final Vector2i[] ADJACENT_CELLS = new Vector2i[]{new Vector2i(-1, 0), new Vector2i(0, -1), new Vector2i(1, 0), new Vector2i(0, 1)};
   class="kw">private class="kw">final IIntCondition density;
   class="kw">private class="kw">final double thickness;
   class="kw">private class="kw">final double thicknessSquared;
   class="kw">private class="kw">final double jitterX;
   class="kw">private class="kw">final double jitterY;

   class="kw">public MeshNoise(IIntCondition var1, double var2, double var4, double var6) {
      this.density = var1;
      this.thickness = var2;
      this.thicknessSquared = var2 * var2;
      this.jitterX = var4;
      this.jitterY = var6;
   }

   @Override
   class="kw">public double get(int var1, int var2, double var3, double var5) {
      double var7 = this.thickness;
      double var9 = this.thicknessSquared;
      int var11 = GeneralNoise.fastFloor(var3);
      int var12 = GeneralNoise.fastFloor(var5);
      double var13 = var3 - var11;
      double var15 = var5 - var12;

      for (int var17 = 0; var17 < 8; var17++) {
         class="kw">switch (var17) {
            case 0:
               if (var13 >= var7 || var15 >= var7) {
                  class="kw">continue;
               }
               break;
            case 1:
               if (var13 >= var7) {
                  class="kw">continue;
               }
               break;
            case 2:
               if (var13 >= var7 || var15 < 1.0 - var7) {
                  class="kw">continue;
               }
               break;
            case 3:
               if (var15 >= var7) {
                  class="kw">continue;
               }
            case 4:
            class="kw">default:
               break;
            case 5:
               if (var15 < 1.0 - var7) {
                  class="kw">continue;
               }
               break;
            case 6:
               if (var13 < 1.0 - var7 || var15 >= var7) {
                  class="kw">continue;
               }
               break;
            case 7:
               if (var13 < 1.0 - var7) {
                  class="kw">continue;
               }
         }

         int var18 = var17 / 3;
         int var19 = var17 % 3;
         int var20 = var11 + var18 - 1;
         int var21 = var12 + var19 - 1;
         int var22 = GridCellDistanceFunction.getHash(var2, var20, var21);
         if (this.density.eval(var22)) {
            DoubleArray.Double2 var23 = CellularNoise.CELL_2D[var22 & 0xFF];
            double var24 = var23.x * this.jitterX;
            double var26 = var23.y * this.jitterY;
            double var28 = var20 + var24;
            double var30 = var21 + var26;
            double var32 = var3 - var28;
            double var34 = var5 - var30;

            for (Vector2i var39 : ADJACENT_CELLS) {
               int var40 = var20 + var39.x;
               int var41 = var21 + var39.y;
               int var42 = GridCellDistanceFunction.getHash(var2, var40, var41);
               if (this.density.eval(var42)) {
                  DoubleArray.Double2 var43 = CellularNoise.CELL_2D[var42 & 0xFF];
                  double var44 = var43.x * this.jitterX;
                  double var46 = var43.y * this.jitterY;
                  double var48 = var39.x + var44 - var24;
                  double var50 = var39.y + var46 - var26;
                  double var52 = (var32 * var48 + var34 * var50) / (var48 * var48 + var50 * var50);
                  if (var52 < 0.0) {
                     var52 = 0.0;
                  } else if (var52 > 1.0) {
                     var52 = 1.0;
                  }

                  double var54 = var28 + var48 * var52;
                  double var56 = var30 + var50 * var52;
                  double var58 = var3 - var54;
                  double var60 = var5 - var56;
                  double var62 = var58 * var58 + var60 * var60;
                  if (var62 < var9) {
                     var9 = var62;
                  }
               }
            }
         }
      }

      if (var9 != this.thicknessSquared) {
         double var64 = Math.sqrt(var9);
         double var65 = var64 / var7;
         class="kw">return var65 * 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");
   }
}