DistortedEllipsoidShape class
Пакет: com.hypixel.hytale.server.worldgen.cave.shape.distorted
Файл: com/hypixel/hytale/server/worldgen/cave/shape/distorted/DistortedEllipsoidShape.java
extends: AbstractDistortedBody
Поля (24)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
radiusX |
|
double |
var10 |
|
|
var11 |
|
|
var11 |
|
double |
var12 |
|
double |
var12 |
|
double |
var14 |
|
double |
var14 |
|
double |
var14 |
|
double |
var16 |
|
double |
var18 |
|
double |
var18 |
|
double |
var19 |
|
double |
var20 |
|
double |
var22 |
|
double |
var24 |
|
double |
var26 |
|
double |
var28 |
|
|
var5 |
|
|
var5 |
|
double |
var6 |
|
double |
var8 |
|
|
var9 |
|
|
var9 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
Factorypublic Factory() |
|
protected DistortedShape |
createShapeprotected DistortedShape createShape(@Nonnull Vector3d var1, Vector3d var2, double var3, double var5, double var7, double var9, double var11, GeneralNoise.InterpolationFunction var13) |
|
|
if if(var16 > this.radiusX2) |
|
|
if if(var18 > this.radiusZ2) |
|
|
if if(var26 > 0.0) |
abstract |
|
super super(var1, var2, var3, var5, var7, var9, var11) |
static |
double |
wrapPitchdouble wrapPitch(double var0, double var2, double var4) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape.distorted;
class="kw">import com.hypixel.hytale.procedurallib.logic.GeneralNoise;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
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 DistortedEllipsoidShape class="kw">extends AbstractDistortedBody {
class="kw">private class="kw">final double radiusX;
class="kw">private class="kw">final double radiusY;
class="kw">private class="kw">final double radiusZ;
class="kw">private class="kw">final double radiusX2;
class="kw">private class="kw">final double radiusY2;
class="kw">private class="kw">final double radiusZ2;
class="kw">private class="kw">final double invRadiusX2;
class="kw">private class="kw">final double invRadiusZ2;
class="kw">private class="kw">final GeneralNoise.InterpolationFunction interpolation;
class="kw">public DistortedEllipsoidShape(
@Nonnull Vector3d var1, Vector3d var2, double var3, double var5, double var7, double var9, double var11, GeneralNoise.InterpolationFunction var13
) {
super(var1, var2, var3, var5, var7, var9, var11);
this.radiusX = var7;
this.radiusY = var9;
this.radiusZ = var11;
this.radiusX2 = var7 * var7;
this.radiusY2 = var9 * var9;
this.radiusZ2 = var11 * var11;
this.invRadiusX2 = 1.0 / this.radiusX2;
this.invRadiusZ2 = 1.0 / this.radiusZ2;
this.interpolation = var13;
}
@Nonnull
@Override
class="kw">public Vector3d getAnchor(@Nonnull Vector3d var1, double var2, double var4, double var6) {
class="kw">return CaveNodeShapeUtils.getSphereAnchor(var1, this.o, this.radiusX, this.radiusY, this.radiusZ, var2, var4, var6);
}
@Override
class="kw">public double getProjection(double var1, double var3) {
class="kw">return 0.0;
}
@Override
class="kw">public boolean isValidProjection(double var1) {
class="kw">return true;
}
@Override
class="kw">public double getYAt(double var1) {
class="kw">return this.o.y;
}
@Override
class="kw">public double getWidthAt(double var1) {
class="kw">return Math.min(this.radiusX, this.radiusZ);
}
@Override
class="kw">public double getHeightAt(double var1) {
class="kw">return this.radiusY;
}
@Override
class="kw">protected double getHeight(int var1, double var2, double var4, double var6, double var8, CaveType var10, @Nonnull ShapeDistortion var11) {
double var12 = var2 - this.o.x;
double var14 = var4 - this.o.z;
double var16 = var12 * var12;
if (var16 > this.radiusX2) {
class="kw">return 0.0;
}
double var18 = var14 * var14;
if (var18 > this.radiusZ2) {
class="kw">return 0.0;
}
double var20 = this.interpolation.interpolate(var16 * this.invRadiusX2);
double var22 = this.interpolation.interpolate(var18 * this.invRadiusZ2);
double var24 = var20 + var22;
double var26 = var11.getWidthFactor(var1, var2, var4);
if (var26 > 0.0) {
var24 /= var26;
}
double var28 = (1.0 - var24) * this.radiusY2;
class="kw">return var28 <= 0.0 ? 0.0 : Math.sqrt(var28);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "DistortedEllipsoidShape{origin="
+ this.o
+ ", direction="
+ this.v
+ ", radiusX="
+ this.radiusX
+ ", radiusY="
+ this.radiusY
+ ", radiusZ="
+ this.radiusZ
+ "}";
}
class="kw">private class="kw">static double wrapPitch(double var0, double var2, double var4) {
double var6 = Math.min(var2, var4);
double var8 = Math.max(var2, var4);
double var10 = 1.0 - var6 / var8;
if (var0 < (float) (-Math.PI / 4)) {
double var14 = 1.0 - Math.abs((var0 + (float) (Math.PI / 4)) / (float) (Math.PI / 4));
class="kw">return (float) (-Math.PI / 2) * var10 * var14;
} else if (var0 > (float) (Math.PI / 4)) {
double var12 = 1.0 - Math.abs((var0 - (float) (Math.PI / 4)) / (float) (Math.PI / 4));
class="kw">return (float) (Math.PI / 2) * var10 * var12;
} else {
class="kw">return var0;
}
}
class="kw">public class="kw">static class Factory class="kw">extends AbstractDistortedBody.Factory {
class="kw">public Factory() {
}
@Nonnull
@Override
class="kw">protected DistortedShape createShape(
@Nonnull Vector3d var1, Vector3d var2, double var3, double var5, double var7, double var9, double var11, GeneralNoise.InterpolationFunction var13
) {
if (var5 < (float) (-Math.PI / 4)) {
double var14 = var9;
var9 = var11;
var11 = var14;
var5 = DistortedEllipsoidShape.wrapPitch(var5, var9, var11);
} else if (var5 > (float) (Math.PI / 4)) {
double var18 = var9;
var9 = var11;
var11 = var18;
var5 = DistortedEllipsoidShape.wrapPitch(var5, var9, var11);
} else {
double var19 = 1.0 - Math.abs(var5 / (float) (Math.PI / 2));
var9 /= var19;
var11 *= var19;
}
class="kw">return new DistortedEllipsoidShape(var1, var2, var3, var5, var7, var9, var11, var13);
}
}
}