Factory class

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

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

implements: DistortedShape.Factory

Поля (2)

МодификаторыТипИмя
double var18
double var20

Методы (2)

МодификаторыВозвратСигнатура
abstract return new DistortedCylinderShapereturn new DistortedCylinderShape(var1, var2, var5, var7, var9, var11, var13, var15, var17)
public DistortedShape createpublic DistortedShape create(@Nonnull Vector3d var1, @Nonnull Vector3d var2, double var3, double var5, double var7, double var9, double var11, double var13, double var15, GeneralNoise.InterpolationFunction var17)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape.distorted;

class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;
class="kw">import com.hypixel.hytale.procedurallib.logic.GeneralNoise;
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 DistortedCylinderShape class="kw">extends AbstractDistortedExtrusion {
   class="kw">protected class="kw">static class="kw">final double PITCH_COMPENSATION_MIN = 1.0;
   class="kw">protected class="kw">static class="kw">final double PITCH_COMPENSATION_RANGE = 3.0;
   @Nonnull
   class="kw">protected class="kw">final Vector3d o;
   @Nonnull
   class="kw">protected class="kw">final Vector3d v;
   class="kw">protected class="kw">final double startWidth;
   class="kw">protected class="kw">final double startHeight;
   class="kw">protected class="kw">final double midWidth;
   class="kw">protected class="kw">final double midHeight;
   class="kw">protected class="kw">final double endWidth;
   class="kw">protected class="kw">final double endHeight;

   class="kw">public DistortedCylinderShape(
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      double var3,
      double var5,
      double var7,
      double var9,
      double var11,
      double var13,
      GeneralNoise.InterpolationFunction var15
   ) {
      this(var1, var2, var3, var5, var7, var9, var11, var13, MathUtil.maxValue(var3, var7, var11), MathUtil.maxValue(var5, var9, var13), var15);
   }

   class="kw">public DistortedCylinderShape(
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      double var3,
      double var5,
      double var7,
      double var9,
      double var11,
      double var13,
      double var15,
      double var17,
      GeneralNoise.InterpolationFunction var19
   ) {
      super(var1, var2, var15, var17, var19);
      this.o = var1;
      this.v = var2;
      this.startWidth = var3;
      this.startHeight = var5;
      this.midWidth = var7;
      this.midHeight = var9;
      this.endWidth = var11;
      this.endHeight = var13;
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getStart() {
      class="kw">return new Vector3d(this.o);
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getEnd() {
      double var1 = this.o.x + this.v.x;
      double var3 = this.o.y + this.v.y;
      double var5 = this.o.z + this.v.z;
      class="kw">return new Vector3d(var1, var3, var5);
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getAnchor(@Nonnull Vector3d var1, double var2, double var4, double var6) {
      double var8 = this.getHeightAt(var2);
      double var10 = this.getWidthAt(var2);
      class="kw">return CaveNodeShapeUtils.getPipeAnchor(var1, this.o, this.v, var10, var8, var10, var2, var4, var6);
   }

   @Override
   class="kw">public double getProjection(double var1, double var3) {
      double var5 = (var1 - this.o.x) * this.v.x + (var3 - this.o.z) * this.v.z;
      class="kw">return var5 / (this.v.x * this.v.x + this.v.z * this.v.z);
   }

   @Override
   class="kw">public boolean isValidProjection(double var1) {
      class="kw">return var1 > 0.0 && var1 < 1.0;
   }

   @Override
   class="kw">public double getYAt(double var1) {
      class="kw">return this.o.y + this.v.y * var1;
   }

   @Override
   class="kw">public double getWidthAt(double var1) {
      class="kw">return getDimAt(var1, this.startWidth, this.midWidth, this.endWidth, this.interpolation);
   }

   @Override
   class="kw">public double getHeightAt(double var1) {
      class="kw">return getDimAt(var1, this.startHeight, this.midHeight, this.endHeight, this.interpolation);
   }

   @Override
   class="kw">public double getDistanceSq(double var1, double var3, double var5) {
      if (var5 <= 0.0) {
         var1 -= this.o.x;
         var3 -= this.o.z;
      } else if (var5 >= 1.0) {
         var1 -= this.o.x + this.v.x;
         var3 -= this.o.z + this.v.z;
      } else {
         var1 -= this.o.x + this.v.x * var5;
         var3 -= this.o.z + this.v.z * var5;
      }

      class="kw">return var1 * var1 + var3 * var3;
   }

   @Override
   class="kw">public double getHeightComponent(double var1, double var3, double var5) {
      class="kw">return Math.sqrt(var3 - var5) / var1;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "DistortedCylinderShape{origin="
         + this.o
         + ", direction="
         + this.v
         + ", startWidth="
         + this.startWidth
         + ", startHeight="
         + this.startHeight
         + ", midWidth="
         + this.midWidth
         + ", midHeight="
         + this.midHeight
         + ", endWidth="
         + this.endWidth
         + ", endHeight="
         + this.endHeight
         + "}";
   }

   class="kw">protected class="kw">static double getDimAt(double var0, double var2, double var4, double var6, @Nonnull GeneralNoise.InterpolationFunction var8) {
      if (var0 <= 0.0) {
         class="kw">return var2;
      } else if (var0 >= 1.0) {
         class="kw">return var6;
      } else if (var0 <= 0.5) {
         var0 = var8.interpolate(var0 * 2.0);
         class="kw">return MathUtil.lerpUnclamped(var2, var4, var0);
      } else {
         var0 = var8.interpolate((var0 - 0.5) * 2.0);
         class="kw">return MathUtil.lerpUnclamped(var4, var6, var0);
      }
   }

   class="kw">protected class="kw">static double getCompensationFactor(@Nonnull Vector3d var0) {
      double var1 = var0.y / var0.length();
      double var3 = TrigMathUtil.asin(-var1);
      class="kw">return Math.abs(var3) / (float) (Math.PI / 2);
   }

   class="kw">protected class="kw">static double getHeightCompensation(double var0) {
      class="kw">return 1.0 + var0 * var0 * var0 * 3.0;
   }

   class="kw">public class="kw">static class Factory class="kw">implements DistortedShape.Factory {
      class="kw">public Factory() {
      }

      @Nonnull
      @Override
      class="kw">public DistortedShape create(
         @Nonnull Vector3d var1,
         @Nonnull Vector3d var2,
         double var3,
         double var5,
         double var7,
         double var9,
         double var11,
         double var13,
         double var15,
         GeneralNoise.InterpolationFunction var17
      ) {
         double var18 = DistortedCylinderShape.getCompensationFactor(var2);
         double var20 = DistortedCylinderShape.getHeightCompensation(var18);
         var7 *= var20;
         var11 *= var20;
         var15 *= var20;
         class="kw">return new DistortedCylinderShape(var1, var2, var5, var7, var9, var11, var13, var15, var17);
      }
   }
}