EllipsoidCaveNodeShape class
Пакет: com.hypixel.hytale.server.worldgen.cave.shape
Файл: com/hypixel/hytale/server/worldgen/cave/shape/EllipsoidCaveNodeShape.java
extends: AbstractCaveNodeShape
implements: IWorldBounds
Поля (12)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
CaveType |
caveType |
|
private final IDoubleRange |
radiusX |
|
private final IDoubleRange |
radiusY |
|
private final IDoubleRange |
radiusZ |
|
double |
var10 |
|
double |
var11 |
|
double |
var12 |
|
double |
var13 |
|
Vector3d |
var14 |
|
double |
var7 |
|
double |
var8 |
|
double |
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
EllipsoidCaveNodeShapeGeneratorpublic EllipsoidCaveNodeShapeGenerator(IDoubleRange var1, IDoubleRange var2, IDoubleRange var3) |
abstract |
return new |
Vector3dreturn new Vector3d(this.o) |
abstract |
return new |
Vector3dreturn new Vector3d(this.o.x, this.lowBoundY, this.o.z) |
abstract |
|
for for(int var6 = this.getLowBoundY() |
abstract |
|
for for(int var6 = this.getHighBoundY() |
|
public CaveNodeShape |
generateCaveNodeShapepublic CaveNodeShape generateCaveNodeShape(Random var1, CaveType var2, CaveNode var3, @Nonnull CaveNodeType.CaveNodeChildEntry var4, @Nonnull Vector3d var5, float var6, float var7) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CaveNode;
class="kw">import com.hypixel.hytale.server.worldgen.util.bounds.IWorldBounds;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class EllipsoidCaveNodeShape class="kw">extends AbstractCaveNodeShape class="kw">implements IWorldBounds {
class="kw">private class="kw">final CaveType caveType;
@Nonnull
class="kw">private class="kw">final Vector3d o;
class="kw">private class="kw">final double rx;
class="kw">private class="kw">final double ry;
class="kw">private class="kw">final double rz;
class="kw">private class="kw">final int lowBoundX;
class="kw">private class="kw">final int lowBoundY;
class="kw">private class="kw">final int lowBoundZ;
class="kw">private class="kw">final int highBoundX;
class="kw">private class="kw">final int highBoundY;
class="kw">private class="kw">final int highBoundZ;
class="kw">public EllipsoidCaveNodeShape(CaveType var1, @Nonnull Vector3d var2, double var3, double var5, double var7) {
this.caveType = var1;
this.o = var2;
this.rx = var3;
this.ry = var5;
this.rz = var7;
this.lowBoundX = MathUtil.floor(Math.min(var2.x - var3, var2.x + var3));
this.lowBoundY = MathUtil.floor(Math.min(var2.y - var5, var2.y + var5));
this.lowBoundZ = MathUtil.floor(Math.min(var2.z - var7, var2.z + var7));
this.highBoundX = MathUtil.ceil(Math.max(var2.x - var3, var2.x + var3));
this.highBoundY = MathUtil.ceil(Math.max(var2.y - var5, var2.y + var5));
this.highBoundZ = MathUtil.ceil(Math.max(var2.z - var7, var2.z + var7));
}
@Nonnull
@Override
class="kw">public Vector3d getStart() {
class="kw">return new Vector3d(this.o);
}
@Nonnull
@Override
class="kw">public Vector3d getEnd() {
class="kw">return new Vector3d(this.o.x, this.lowBoundY, this.o.z);
}
@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.rx, this.ry, this.rz, var2, var4, var6);
}
@Nonnull
@Override
class="kw">public IWorldBounds getBounds() {
class="kw">return this;
}
@Override
class="kw">public int getLowBoundX() {
class="kw">return this.lowBoundX;
}
@Override
class="kw">public int getLowBoundZ() {
class="kw">return this.lowBoundZ;
}
@Override
class="kw">public int getHighBoundX() {
class="kw">return this.highBoundX;
}
@Override
class="kw">public int getHighBoundZ() {
class="kw">return this.highBoundZ;
}
@Override
class="kw">public int getLowBoundY() {
class="kw">return this.lowBoundY;
}
@Override
class="kw">public int getHighBoundY() {
class="kw">return this.highBoundY;
}
@Override
class="kw">public boolean shouldReplace(int var1, double var2, double var4, int var6) {
double var7 = var2;
double var9 = var6;
double var11 = var4;
var7 -= this.o.x;
var9 -= this.o.y;
var11 -= this.o.z;
var7 /= this.rx;
var9 /= this.ry;
var11 /= this.rz;
double var13 = this.caveType.getHeightRadiusFactor(var1, var2, var4, var6);
class="kw">return var7 * var7 + var9 * var9 + var11 * var11 <= var13 * var13;
}
@Override
class="kw">public double getFloorPosition(int var1, double var2, double var4) {
for (int var6 = this.getLowBoundY(); var6 < this.o.y; var6++) {
if (this.shouldReplace(var1, var2, var4, var6)) {
class="kw">return var6 - 1;
}
}
class="kw">return -1.0;
}
@Override
class="kw">public double getCeilingPosition(int var1, double var2, double var4) {
for (int var6 = this.getHighBoundY(); var6 > this.o.y; var6--) {
if (this.shouldReplace(var1, var2, var4, var6)) {
class="kw">return var6 + 1;
}
}
class="kw">return -1.0;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "EllipsoidCaveNodeShape{caveType="
+ this.caveType
+ ", o="
+ this.o
+ ", rx="
+ this.rx
+ ", ry="
+ this.ry
+ ", rz="
+ this.rz
+ ", lowBoundX="
+ this.lowBoundX
+ ", lowBoundY="
+ this.lowBoundY
+ ", lowBoundZ="
+ this.lowBoundZ
+ ", highBoundX="
+ this.highBoundX
+ ", highBoundY="
+ this.highBoundY
+ ", highBoundZ="
+ this.highBoundZ
+ "}";
}
class="kw">public class="kw">static class EllipsoidCaveNodeShapeGenerator class="kw">implements CaveNodeShapeEnum.CaveNodeShapeGenerator {
class="kw">private class="kw">final IDoubleRange radiusX;
class="kw">private class="kw">final IDoubleRange radiusY;
class="kw">private class="kw">final IDoubleRange radiusZ;
class="kw">public EllipsoidCaveNodeShapeGenerator(IDoubleRange var1, IDoubleRange var2, IDoubleRange var3) {
this.radiusX = var1;
this.radiusY = var2;
this.radiusZ = var3;
}
@Nonnull
@Override
class="kw">public CaveNodeShape generateCaveNodeShape(
Random var1, CaveType var2, CaveNode var3, @Nonnull CaveNodeType.CaveNodeChildEntry var4, @Nonnull Vector3d var5, float var6, float var7
) {
double var8 = this.radiusX.getValue(var1);
double var10 = this.radiusY.getValue(var1);
double var12 = this.radiusZ.getValue(var1);
Vector3d var14 = CaveNodeShapeUtils.getOffset(var3, var4);
var5.add(var14);
class="kw">return new EllipsoidCaveNodeShape(var2, var5, var8, var10, var12);
}
}
}