Factory class
Пакет: com.hypixel.hytale.server.worldgen.cave.shape.distorted
Файл: com/hypixel/hytale/server/worldgen/cave/shape/distorted/DistortedCylinderShape.java
implements: DistortedShape.Factory
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
var18 |
|
double |
var20 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
DistortedCylinderShapereturn new DistortedCylinderShape(var1, var2, var5, var7, var9, var11, var13, var15, var17) |
|
public DistortedShape |
createpublic DistortedShape create(@Nonnull Vector3d var1,
@Nonnull Vector3d var2,
double var3,
double var5,
double var7,
double var9,
double var11,
double var13,
double var15,
GeneralNoise.InterpolationFunction var17) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape.distorted;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;
class="kw">import com.hypixel.hytale.procedurallib.logic.GeneralNoise;
class="kw">import com.hypixel.hytale.server.worldgen.cave.shape.CaveNodeShapeUtils;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class DistortedCylinderShape class="kw">extends AbstractDistortedExtrusion {
class="kw">protected class="kw">static class="kw">final double PITCH_COMPENSATION_MIN = 1.0;
class="kw">protected class="kw">static class="kw">final double PITCH_COMPENSATION_RANGE = 3.0;
@Nonnull
class="kw">protected class="kw">final Vector3d o;
@Nonnull
class="kw">protected class="kw">final Vector3d v;
class="kw">protected class="kw">final double startWidth;
class="kw">protected class="kw">final double startHeight;
class="kw">protected class="kw">final double midWidth;
class="kw">protected class="kw">final double midHeight;
class="kw">protected class="kw">final double endWidth;
class="kw">protected class="kw">final double endHeight;
class="kw">public DistortedCylinderShape(
@Nonnull Vector3d var1,
@Nonnull Vector3d var2,
double var3,
double var5,
double var7,
double var9,
double var11,
double var13,
GeneralNoise.InterpolationFunction var15
) {
this(var1, var2, var3, var5, var7, var9, var11, var13, MathUtil.maxValue(var3, var7, var11), MathUtil.maxValue(var5, var9, var13), var15);
}
class="kw">public DistortedCylinderShape(
@Nonnull Vector3d var1,
@Nonnull Vector3d var2,
double var3,
double var5,
double var7,
double var9,
double var11,
double var13,
double var15,
double var17,
GeneralNoise.InterpolationFunction var19
) {
super(var1, var2, var15, var17, var19);
this.o = var1;
this.v = var2;
this.startWidth = var3;
this.startHeight = var5;
this.midWidth = var7;
this.midHeight = var9;
this.endWidth = var11;
this.endHeight = var13;
}
@Nonnull
@Override
class="kw">public Vector3d getStart() {
class="kw">return new Vector3d(this.o);
}
@Nonnull
@Override
class="kw">public Vector3d getEnd() {
double var1 = this.o.x + this.v.x;
double var3 = this.o.y + this.v.y;
double var5 = this.o.z + this.v.z;
class="kw">return new Vector3d(var1, var3, var5);
}
@Nonnull
@Override
class="kw">public Vector3d getAnchor(@Nonnull Vector3d var1, double var2, double var4, double var6) {
double var8 = this.getHeightAt(var2);
double var10 = this.getWidthAt(var2);
class="kw">return CaveNodeShapeUtils.getPipeAnchor(var1, this.o, this.v, var10, var8, var10, var2, var4, var6);
}
@Override
class="kw">public double getProjection(double var1, double var3) {
double var5 = (var1 - this.o.x) * this.v.x + (var3 - this.o.z) * this.v.z;
class="kw">return var5 / (this.v.x * this.v.x + this.v.z * this.v.z);
}
@Override
class="kw">public boolean isValidProjection(double var1) {
class="kw">return var1 > 0.0 && var1 < 1.0;
}
@Override
class="kw">public double getYAt(double var1) {
class="kw">return this.o.y + this.v.y * var1;
}
@Override
class="kw">public double getWidthAt(double var1) {
class="kw">return getDimAt(var1, this.startWidth, this.midWidth, this.endWidth, this.interpolation);
}
@Override
class="kw">public double getHeightAt(double var1) {
class="kw">return getDimAt(var1, this.startHeight, this.midHeight, this.endHeight, this.interpolation);
}
@Override
class="kw">public double getDistanceSq(double var1, double var3, double var5) {
if (var5 <= 0.0) {
var1 -= this.o.x;
var3 -= this.o.z;
} else if (var5 >= 1.0) {
var1 -= this.o.x + this.v.x;
var3 -= this.o.z + this.v.z;
} else {
var1 -= this.o.x + this.v.x * var5;
var3 -= this.o.z + this.v.z * var5;
}
class="kw">return var1 * var1 + var3 * var3;
}
@Override
class="kw">public double getHeightComponent(double var1, double var3, double var5) {
class="kw">return Math.sqrt(var3 - var5) / var1;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "DistortedCylinderShape{origin="
+ this.o
+ ", direction="
+ this.v
+ ", startWidth="
+ this.startWidth
+ ", startHeight="
+ this.startHeight
+ ", midWidth="
+ this.midWidth
+ ", midHeight="
+ this.midHeight
+ ", endWidth="
+ this.endWidth
+ ", endHeight="
+ this.endHeight
+ "}";
}
class="kw">protected class="kw">static double getDimAt(double var0, double var2, double var4, double var6, @Nonnull GeneralNoise.InterpolationFunction var8) {
if (var0 <= 0.0) {
class="kw">return var2;
} else if (var0 >= 1.0) {
class="kw">return var6;
} else if (var0 <= 0.5) {
var0 = var8.interpolate(var0 * 2.0);
class="kw">return MathUtil.lerpUnclamped(var2, var4, var0);
} else {
var0 = var8.interpolate((var0 - 0.5) * 2.0);
class="kw">return MathUtil.lerpUnclamped(var4, var6, var0);
}
}
class="kw">protected class="kw">static double getCompensationFactor(@Nonnull Vector3d var0) {
double var1 = var0.y / var0.length();
double var3 = TrigMathUtil.asin(-var1);
class="kw">return Math.abs(var3) / (float) (Math.PI / 2);
}
class="kw">protected class="kw">static double getHeightCompensation(double var0) {
class="kw">return 1.0 + var0 * var0 * var0 * 3.0;
}
class="kw">public class="kw">static class Factory class="kw">implements DistortedShape.Factory {
class="kw">public Factory() {
}
@Nonnull
@Override
class="kw">public DistortedShape create(
@Nonnull Vector3d var1,
@Nonnull Vector3d var2,
double var3,
double var5,
double var7,
double var9,
double var11,
double var13,
double var15,
GeneralNoise.InterpolationFunction var17
) {
double var18 = DistortedCylinderShape.getCompensationFactor(var2);
double var20 = DistortedCylinderShape.getHeightCompensation(var18);
var7 *= var20;
var11 *= var20;
var15 *= var20;
class="kw">return new DistortedCylinderShape(var1, var2, var5, var7, var9, var11, var13, var15, var17);
}
}
}