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