Function enum
Пакет: com.hypixel.hytale.builtin.hytalegenerator.density
Файл: com/hypixel/hytale/builtin/hytalegenerator/density/TrigDensity.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Sin,
Cos,
Tan,
Asin,
Acos, |
Atan |
|
public static final Codec<TrigDensity.Function> |
CODEC |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.math.Calculator;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class TrigDensity class="kw">extends Density {
class="kw">private class="kw">static class="kw">final double TAN_LIMIT = 1000000.0;
@Nonnull
class="kw">private class="kw">final TrigDensity.Function function;
class="kw">private class="kw">final double inputScale;
@Nullable
class="kw">private Density input;
class="kw">public TrigDensity(@Nonnull TrigDensity.Function var1, double var2, Density var4) {
this.function = var1;
this.inputScale = var2;
this.input = var4;
}
@Override
class="kw">public double process(@Nonnull Density.Context var1) {
if (this.input == null) {
class="kw">return 0.0;
}
double var2 = this.input.process(var1) * this.inputScale;
double var4 = class="kw">switch (this.function) {
case Sin -> Math.sin(var2);
case Cos -> Math.cos(var2);
case Tan -> Calculator.clamp(-1000000.0, Math.tan(var2), 1000000.0);
case Asin -> Math.asin(Calculator.clamp(-1.0, var2, 1.0));
case Acos -> Math.acos(Calculator.clamp(-1.0, var2, 1.0));
case Atan -> Math.atan(var2);
};
class="kw">return Double.isFinite(var4) ? var4 : 0.0;
}
@Override
class="kw">public void setInputs(@Nonnull Density[] var1) {
this.input = var1.length == 0 ? null : var1[0];
}
class="kw">public enum Function {
Sin,
Cos,
Tan,
Asin,
Acos,
Atan;
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<TrigDensity.Function> CODEC = new EnumCodec<>(TrigDensity.Function.class);
Function() {
}
}
}