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