AxisDensity class

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

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

extends: Density

Поля (4)

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

Методы (4)

МодификаторыВозвратСигнатура
if if(this.isAnchored)
if if(var1 == null)
if if(var2 == null)
private double processAnchoreddouble processAnchored(@Nonnull Density.Context var1)

Исходный код

Показать/скрыть
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 org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;

class="kw">public class AxisDensity 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 axis;
   class="kw">private class="kw">final boolean isAnchored;
   @Nonnull
   class="kw">private class="kw">final Vector3d rPosition;
   @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;
   @Nonnull
   class="kw">private class="kw">final Vector3d r4;

   class="kw">public AxisDensity(@Nonnull Double2DoubleFunction var1, @Nonnull Vector3d var2, boolean var3) {
      this.distanceCurve = var1;
      this.axis = var2;
      this.isAnchored = var3;
      this.rPosition = new Vector3d();
      this.r0 = new Vector3d();
      this.r1 = new Vector3d();
      this.r2 = new Vector3d();
      this.r3 = new Vector3d();
      this.r4 = new Vector3d();
   }

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

      if (this.isAnchored) {
         class="kw">return this.processAnchored(var1);
      }

      double var2 = VectorUtil.distanceToLine3d(var1.position, ZERO_VECTOR, this.axis, this.r0, this.r1, this.r2, this.r3, this.r4);
      class="kw">return this.distanceCurve.get(var2);
   }

   class="kw">private double processAnchored(@Nonnull Density.Context var1) {
      if (var1 == null) {
         class="kw">return 0.0;
      }

      Vector3dc var2 = var1.densityAnchor;
      if (var2 == null) {
         class="kw">return 0.0;
      }

      this.rPosition.set(var1.position).sub(var2);
      double var3 = VectorUtil.distanceToLine3d(this.rPosition, ZERO_VECTOR, this.axis, this.r0, this.r1, this.r2, this.r3, this.r4);
      class="kw">return this.distanceCurve.get(var3);
   }
}