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