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