PlaneDensity class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.density

Файл: com/hypixel/hytale/builtin/hytalegenerator/density/PlaneDensity.java

extends: Density

Поля (8)

МодификаторыТипИмя
final double ZERO_DELTA
double var2
var2
var2
Vector3dc var8
double var9
var9
var9

Методы (6)

МодификаторыВозвратСигнатура
if if(this.isAnchored)
if if(this.isPlaneHorizontal)
if if(var7 == null)
if if(var8 == null)
if if(this.isPlaneHorizontal)
private double processAnchoreddouble processAnchored(double var1, double var3, double var5, @Nullable Density.Context var7)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.density;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
class="kw">import it.unimi.dsi.fastutil.doubles.Double2DoubleFunction;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;

class="kw">public class PlaneDensity class="kw">extends Density {
   class="kw">public class="kw">static class="kw">final double ZERO_DELTA = 1.0E-9;
   @Nonnull
   class="kw">private class="kw">static class="kw">final Vector3d ZERO_VECTOR = new Vector3d();
   @Nonnull
   class="kw">private class="kw">final Double2DoubleFunction distanceCurve;
   @Nonnull
   class="kw">private class="kw">final Vector3d planeNormal;
   class="kw">private class="kw">final boolean isPlaneHorizontal;
   class="kw">private class="kw">final boolean isAnchored;
   @Nonnull
   class="kw">private class="kw">final Vector3d rNearestPoint;
   @Nonnull
   class="kw">private class="kw">final Vector3d rPosition;
   @Nonnull
   class="kw">private class="kw">final Vector3d rVectorFromPlane;
   @Nonnull
   class="kw">private class="kw">final Vector3d r0;
   @Nonnull
   class="kw">private class="kw">final Vector3d r1;
   @Nonnull
   class="kw">private class="kw">final Vector3d r2;
   @Nonnull
   class="kw">private class="kw">final Vector3d r3;

   class="kw">public PlaneDensity(@Nonnull Double2DoubleFunction var1, @Nonnull Vector3d var2, boolean var3) {
      this.distanceCurve = var1;
      this.planeNormal = var2;
      this.isPlaneHorizontal = var2.x == 0.0 && var2.z == 0.0;
      this.isAnchored = var3;
      this.rNearestPoint = new Vector3d();
      this.rPosition = new Vector3d();
      this.rVectorFromPlane = new Vector3d();
      this.r0 = new Vector3d();
      this.r1 = new Vector3d();
      this.r2 = new Vector3d();
      this.r3 = new Vector3d();
   }

   @Override
   class="kw">public double process(@Nonnull Density.Context var1) {
      if (this.planeNormal.length() == 0.0) {
         class="kw">return 0.0;
      }

      if (this.isAnchored) {
         class="kw">return this.processAnchored(var1.position.x, var1.position.y, var1.position.z, var1);
      }

      double var2 = 0.0;
      if (this.isPlaneHorizontal) {
         var2 = var1.position.y;
      } else {
         VectorUtil.nearestPointOnLine3d(var1.position, ZERO_VECTOR, this.planeNormal, this.rNearestPoint, this.r0, this.r1, this.r2, this.r3);
         var2 = this.rNearestPoint.length();
      }

      class="kw">return this.distanceCurve.get(var2);
   }

   class="kw">private double processAnchored(double var1, double var3, double var5, @Nullable Density.Context var7) {
      if (var7 == null) {
         class="kw">return 0.0;
      }

      this.rPosition.set(var1, var3, var5);
      Vector3dc var8 = var7.densityAnchor;
      if (var8 == null) {
         class="kw">return 0.0;
      }

      double var9 = 0.0;
      if (this.isPlaneHorizontal) {
         var9 = Math.abs(var8.y() - this.rPosition.y);
      }

      this.rPosition.sub(var8);
      VectorUtil.nearestPointOnLine3d(this.rPosition, ZERO_VECTOR, this.planeNormal, this.rVectorFromPlane, this.r0, this.r1, this.r2, this.r3);
      var9 = this.rVectorFromPlane.length();
      class="kw">return this.distanceCurve.get(var9);
   }
}