IterationElement class

Пакет: com.hypixel.hytale.math.util

Файл: com/hypixel/hytale/math/util/NearestBlockUtil.java

Поля (6)

МодификаторыТипИмя
private final int ox
private final int oy
private final int oz
private final DoubleUnaryOperator x
private final DoubleUnaryOperator y
private final DoubleUnaryOperator z

Методы (6)

МодификаторыВозвратСигнатура
public int getOffsetXpublic int getOffsetX()
public int getOffsetYpublic int getOffsetY()
public int getOffsetZpublic int getOffsetZ()
public DoubleUnaryOperator getXpublic DoubleUnaryOperator getX()
public DoubleUnaryOperator getYpublic DoubleUnaryOperator getY()
public DoubleUnaryOperator getZpublic DoubleUnaryOperator getZ()

Исходный код

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

class="kw">import java.util.function.BiPredicate;
class="kw">import java.util.function.DoubleUnaryOperator;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class="kw">final class NearestBlockUtil {
   class="kw">public class="kw">static class="kw">final NearestBlockUtil.IterationElement[] DEFAULT_ELEMENTS = new NearestBlockUtil.IterationElement[]{
      new NearestBlockUtil.IterationElement(-1, 0, 0, var0 -> 0.0, var0 -> var0, var0 -> var0),
      new NearestBlockUtil.IterationElement(1, 0, 0, var0 -> 1.0, var0 -> var0, var0 -> var0),
      new NearestBlockUtil.IterationElement(0, -1, 0, var0 -> var0, var0 -> 0.0, var0 -> var0),
      new NearestBlockUtil.IterationElement(0, 1, 0, var0 -> var0, var0 -> 1.0, var0 -> var0),
      new NearestBlockUtil.IterationElement(0, 0, -1, var0 -> var0, var0 -> var0, var0 -> 0.0),
      new NearestBlockUtil.IterationElement(0, 0, 1, var0 -> var0, var0 -> var0, var0 -> 1.0)
   };

   class="kw">private NearestBlockUtil() {
      throw new UnsupportedOperationException();
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(@Nonnull Vector3d var0, @Nonnull BiPredicate<Vector3i, T> var1, T var2) {
      class="kw">return findNearestBlock(DEFAULT_ELEMENTS, var0.x(), var0.y(), var0.z(), var1, var2);
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(
      @Nonnull NearestBlockUtil.IterationElement[] var0, @Nonnull Vector3d var1, @Nonnull BiPredicate<Vector3i, T> var2, T var3
   ) {
      class="kw">return findNearestBlock(var0, var1.x(), var1.y(), var1.z(), var2, var3);
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(double var0, double var2, double var4, @Nonnull BiPredicate<Vector3i, T> var6, T var7) {
      class="kw">return findNearestBlock(DEFAULT_ELEMENTS, var0, var2, var4, var6, var7);
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(
      @Nonnull NearestBlockUtil.IterationElement[] var0, double var1, double var3, double var5, @Nonnull BiPredicate<Vector3i, T> var7, T var8
   ) {
      int var9 = MathUtil.floor(var1);
      int var10 = MathUtil.floor(var3);
      int var11 = MathUtil.floor(var5);
      double var12 = var1 - var9;
      double var14 = var3 - var10;
      double var16 = var5 - var11;
      Vector3i var26 = null;
      Vector3i var27 = new Vector3i();
      double var28 = Double.POSITIVE_INFINITY;

      for (NearestBlockUtil.IterationElement var33 : var0) {
         double var18 = var12 - var33.getX().applyAsDouble(var12);
         double var20 = var14 - var33.getY().applyAsDouble(var14);
         double var22 = var16 - var33.getZ().applyAsDouble(var16);
         double var24 = var18 * var18 + var20 * var20 + var22 * var22;
         var27.set(var9 + var33.getOffsetX(), var10 + var33.getOffsetY(), var11 + var33.getOffsetZ());
         if (var24 < var28 && var7.test(var27, var8)) {
            var28 = var24;
            if (var26 == null) {
               var26 = new Vector3i();
            }

            var26.set(var27);
         }
      }

      class="kw">return var26;
   }

   class="kw">public class="kw">static class IterationElement {
      class="kw">private class="kw">final int ox;
      class="kw">private class="kw">final int oy;
      class="kw">private class="kw">final int oz;
      class="kw">private class="kw">final DoubleUnaryOperator x;
      class="kw">private class="kw">final DoubleUnaryOperator y;
      class="kw">private class="kw">final DoubleUnaryOperator z;

      class="kw">public IterationElement(int var1, int var2, int var3, DoubleUnaryOperator var4, DoubleUnaryOperator var5, DoubleUnaryOperator var6) {
         this.ox = var1;
         this.oy = var2;
         this.oz = var3;
         this.x = var4;
         this.y = var5;
         this.z = var6;
      }

      class="kw">public int getOffsetX() {
         class="kw">return this.ox;
      }

      class="kw">public int getOffsetY() {
         class="kw">return this.oy;
      }

      class="kw">public int getOffsetZ() {
         class="kw">return this.oz;
      }

      class="kw">public DoubleUnaryOperator getX() {
         class="kw">return this.x;
      }

      class="kw">public DoubleUnaryOperator getY() {
         class="kw">return this.y;
      }

      class="kw">public DoubleUnaryOperator getZ() {
         class="kw">return this.z;
      }
   }
}