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