EllipsoidCaveNodeShapeGenerator class

Пакет: com.hypixel.hytale.server.worldgen.cave.shape

Файл: com/hypixel/hytale/server/worldgen/cave/shape/EllipsoidCaveNodeShape.java

implements: CaveNodeShapeEnum.CaveNodeShapeGenerator

Поля (7)

МодификаторыТипИмя
private final IDoubleRange radiusX
private final IDoubleRange radiusY
private final IDoubleRange radiusZ
double var10
double var12
Vector3d var14
double var8

Методы (2)

МодификаторыВозвратСигнатура
abstract return new EllipsoidCaveNodeShapereturn new EllipsoidCaveNodeShape(var2, var5, var8, var10, var12)
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);
      }
   }
}