BlockIterator class

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

Файл: com/hypixel/hytale/math/iterator/BlockIterator.java

Поля (64)

МодификаторыТипИмя
static final double ROUNDING_ERROR
static final double TWO_POWER_52
double var12
var12
var12
var12
var12
var12
var12
double var13
double var14
double var14
double var15
int var15
double var16
int var16
int var16
double var16
double var17
int var17
int var17
double var18
double var18
var18
int var18
double var18
double var19
double var19
var19
long var2
double var20
double var20
var20
double var20
double var21
var21
double var21
double var22
var22
double var22
double var23
var23
double var23
double var24
double var24
double var25
double var25
double var26
double var26
double var27
double var27
double var28
double var28
double var29
double var29
double var30
double var30
double var31
double var31
double var32
double var32
double var33
double var33
double var34

Методы (39)

МодификаторыВозвратСигнатура
FastMath FastMath()
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("sx is a non-valid number! Given: " + var0)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("sy is a non-valid number! Given: " + var2)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("sz is a non-valid number! Given: " + var4)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("dx is a non-valid number! Given: " + var6)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("dy is a non-valid number! Given: " + var8)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("dz is a non-valid number! Given: " + var10)
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("This is a utilitiy class. Do not instantiate.")
static double absstatic double abs(double var0)
abstract boolean acceptboolean accept(int var1, int var2, int var3, double var4, double var6, double var8, double var10, double var12, double var14)
abstract boolean acceptboolean accept(int var1, int var2, int var3, double var4, double var6, double var8, double var10, double var12, double var14, T var16)
static void checkParametersvoid checkParameters(double var0, double var2, double var4, double var6, double var8, double var10)
abstract checkParameters checkParameters(var0, var2, var4, var6, var8, var10)
static boolean eqstatic boolean eq(double var0, double var2)
static long fastFloorstatic long fastFloor(double var0)
static boolean gEqstatic boolean gEq(double var0, double var2)
if if(var6 < 0.0)
if if(var8 < 0.0)
if if(var10 < 0.0)
if if(var0 < 0.0 && var2 != var0)
static double intersectiondouble intersection(double var0, double var2, double var4, double var6, double var8, double var10)
static boolean isNonValidNumberboolean isNonValidNumber(double var0)
static boolean isZeroDirectionboolean isZeroDirection(double var0, double var2, double var4)
static boolean iterateboolean iterate(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, double var2, @Nonnull BlockIterator.BlockIteratorProcedure var4)
static boolean iterateboolean iterate(double var0, double var2, double var4, double var6, double var8, double var10, double var12, @Nonnull BlockIterator.BlockIteratorProcedure var14)
static <T> boolean iterate<T> boolean iterate(double var0, double var2, double var4, double var6, double var8, double var10, double var12, @Nonnull BlockIterator.BlockIteratorProcedurePlus1<T> var14, T var15)
abstract return iteratereturn iterate(var0, var2, var4, var13, var15, var17, var19, var12)
abstract return iteratereturn iterate(var0, var2, var4, var14, var16, var18, var20, var12, var13)
static boolean iterate0boolean iterate0(double var0, double var2, double var4, double var6, double var8, double var10, double var12, @Nonnull BlockIterator.BlockIteratorProcedure var14)
static <T> boolean iterate0<T> boolean iterate0(double var0, double var2, double var4, double var6, double var8, double var10, double var12, @Nonnull BlockIterator.BlockIteratorProcedurePlus1<T> var14, T var15)
abstract return iterate0return iterate0(var0, var2, var4, var6, var8, var10, var12, var14)
abstract return iterate0return iterate0(var0, var2, var4, var6, var8, var10, var12, var14, var15)
static boolean iterateFromToboolean iterateFromTo(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, @Nonnull BlockIterator.BlockIteratorProcedure var2)
static boolean iterateFromToboolean iterateFromTo(@Nonnull Vector3ic var0, @Nonnull Vector3ic var1, @Nonnull BlockIterator.BlockIteratorProcedure var2)
static boolean iterateFromToboolean iterateFromTo(double var0, double var2, double var4, double var6, double var8, double var10, @Nonnull BlockIterator.BlockIteratorProcedure var12)
static <T> boolean iterateFromTo<T> boolean iterateFromTo(double var0, double var2, double var4, double var6, double var8, double var10, @Nonnull BlockIterator.BlockIteratorProcedurePlus1<T> var12, T var13)
static boolean sEqstatic boolean sEq(double var0, double var2)
while while(var24 <= var12)
while while(var25 <= var12)

Исходный код

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

class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3ic;

class="kw">public class="kw">final class BlockIterator {
   class="kw">private BlockIterator() {
      throw new UnsupportedOperationException("This is a utilitiy class. Do not instantiate.");
   }

   class="kw">public class="kw">static boolean iterateFromTo(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, @Nonnull BlockIterator.BlockIteratorProcedure var2) {
      class="kw">return iterateFromTo(var0.x(), var0.y(), var0.z(), var1.x(), var1.y(), var1.z(), var2);
   }

   class="kw">public class="kw">static boolean iterateFromTo(@Nonnull Vector3ic var0, @Nonnull Vector3ic var1, @Nonnull BlockIterator.BlockIteratorProcedure var2) {
      class="kw">return iterateFromTo(var0.x(), var0.y(), var0.z(), var1.x(), var1.y(), var1.z(), var2);
   }

   class="kw">public class="kw">static boolean iterateFromTo(
      double var0, double var2, double var4, double var6, double var8, double var10, @Nonnull BlockIterator.BlockIteratorProcedure var12
   ) {
      double var13 = var6 - var0;
      double var15 = var8 - var2;
      double var17 = var10 - var4;
      double var19 = Math.sqrt(var13 * var13 + var15 * var15 + var17 * var17);
      class="kw">return iterate(var0, var2, var4, var13, var15, var17, var19, var12);
   }

   class="kw">public class="kw">static <T> boolean iterateFromTo(
      double var0, double var2, double var4, double var6, double var8, double var10, @Nonnull BlockIterator.BlockIteratorProcedurePlus1<T> var12, T var13
   ) {
      double var14 = var6 - var0;
      double var16 = var8 - var2;
      double var18 = var10 - var4;
      double var20 = Math.sqrt(var14 * var14 + var16 * var16 + var18 * var18);
      class="kw">return iterate(var0, var2, var4, var14, var16, var18, var20, var12, var13);
   }

   class="kw">public class="kw">static boolean iterate(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, double var2, @Nonnull BlockIterator.BlockIteratorProcedure var4) {
      class="kw">return iterate(var0.x(), var0.y(), var0.z(), var1.x(), var1.y(), var1.z(), var2, var4);
   }

   class="kw">public class="kw">static boolean iterate(
      double var0, double var2, double var4, double var6, double var8, double var10, double var12, @Nonnull BlockIterator.BlockIteratorProcedure var14
   ) {
      checkParameters(var0, var2, var4, var6, var8, var10);
      class="kw">return iterate0(var0, var2, var4, var6, var8, var10, var12, var14);
   }

   class="kw">private class="kw">static boolean iterate0(
      double var0, double var2, double var4, double var6, double var8, double var10, double var12, @Nonnull BlockIterator.BlockIteratorProcedure var14
   ) {
      var12 /= Math.sqrt(var6 * var6 + var8 * var8 + var10 * var10);
      int var15 = (int)BlockIterator.FastMath.fastFloor(var0);
      int var16 = (int)BlockIterator.FastMath.fastFloor(var2);
      int var17 = (int)BlockIterator.FastMath.fastFloor(var4);
      double var18 = var0 - var15;
      double var20 = var2 - var16;
      double var22 = var4 - var17;
      double var24 = 0.0;

      while (var24 <= var12) {
         double var26 = intersection(var18, var20, var22, var6, var8, var10);
         double var28 = var18 + var26 * var6;
         double var30 = var20 + var26 * var8;
         double var32 = var22 + var26 * var10;
         if (!var14.accept(var15, var16, var17, var18, var20, var22, var28, var30, var32)) {
            class="kw">return false;
         }

         if (var6 < 0.0 && BlockIterator.FastMath.sEq(var28, 0.0)) {
            var28++;
            var15--;
         } else if (var6 > 0.0 && BlockIterator.FastMath.gEq(var28, 1.0)) {
            var28--;
            var15++;
         }

         if (var8 < 0.0 && BlockIterator.FastMath.sEq(var30, 0.0)) {
            var30++;
            var16--;
         } else if (var8 > 0.0 && BlockIterator.FastMath.gEq(var30, 1.0)) {
            var30--;
            var16++;
         }

         if (var10 < 0.0 && BlockIterator.FastMath.sEq(var32, 0.0)) {
            var32++;
            var17--;
         } else if (var10 > 0.0 && BlockIterator.FastMath.gEq(var32, 1.0)) {
            var32--;
            var17++;
         }

         var24 += var26;
         var18 = var28;
         var20 = var30;
         var22 = var32;
      }

      class="kw">return true;
   }

   class="kw">public class="kw">static <T> boolean iterate(
      double var0,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      @Nonnull BlockIterator.BlockIteratorProcedurePlus1<T> var14,
      T var15
   ) {
      checkParameters(var0, var2, var4, var6, var8, var10);
      class="kw">return iterate0(var0, var2, var4, var6, var8, var10, var12, var14, var15);
   }

   class="kw">private class="kw">static <T> boolean iterate0(
      double var0,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      @Nonnull BlockIterator.BlockIteratorProcedurePlus1<T> var14,
      T var15
   ) {
      var12 /= Math.sqrt(var6 * var6 + var8 * var8 + var10 * var10);
      int var16 = (int)BlockIterator.FastMath.fastFloor(var0);
      int var17 = (int)BlockIterator.FastMath.fastFloor(var2);
      int var18 = (int)BlockIterator.FastMath.fastFloor(var4);
      double var19 = var0 - var16;
      double var21 = var2 - var17;
      double var23 = var4 - var18;
      double var25 = 0.0;

      while (var25 <= var12) {
         double var27 = intersection(var19, var21, var23, var6, var8, var10);
         double var29 = var19 + var27 * var6;
         double var31 = var21 + var27 * var8;
         double var33 = var23 + var27 * var10;
         if (!var14.accept(var16, var17, var18, var19, var21, var23, var29, var31, var33, var15)) {
            class="kw">return false;
         }

         if (var6 < 0.0 && BlockIterator.FastMath.sEq(var29, 0.0)) {
            var29++;
            var16--;
         } else if (var6 > 0.0 && BlockIterator.FastMath.gEq(var29, 1.0)) {
            var29--;
            var16++;
         }

         if (var8 < 0.0 && BlockIterator.FastMath.sEq(var31, 0.0)) {
            var31++;
            var17--;
         } else if (var8 > 0.0 && BlockIterator.FastMath.gEq(var31, 1.0)) {
            var31--;
            var17++;
         }

         if (var10 < 0.0 && BlockIterator.FastMath.sEq(var33, 0.0)) {
            var33++;
            var18--;
         } else if (var10 > 0.0 && BlockIterator.FastMath.gEq(var33, 1.0)) {
            var33--;
            var18++;
         }

         var25 += var27;
         var19 = var29;
         var21 = var31;
         var23 = var33;
      }

      class="kw">return true;
   }

   class="kw">private class="kw">static void checkParameters(double var0, double var2, double var4, double var6, double var8, double var10) {
      if (isNonValidNumber(var0)) {
         throw new IllegalArgumentException("sx is a non-valid number! Given: " + var0);
      }

      if (isNonValidNumber(var2)) {
         throw new IllegalArgumentException("sy is a non-valid number! Given: " + var2);
      }

      if (isNonValidNumber(var4)) {
         throw new IllegalArgumentException("sz is a non-valid number! Given: " + var4);
      }

      if (isNonValidNumber(var6)) {
         throw new IllegalArgumentException("dx is a non-valid number! Given: " + var6);
      }

      if (isNonValidNumber(var8)) {
         throw new IllegalArgumentException("dy is a non-valid number! Given: " + var8);
      }

      if (isNonValidNumber(var10)) {
         throw new IllegalArgumentException("dz is a non-valid number! Given: " + var10);
      }

      if (isZeroDirection(var6, var8, var10)) {
         throw new IllegalArgumentException("Direction is ZERO! Given: (" + var6 + ", " + var8 + ", " + var10 + ")");
      }
   }

   class="kw">public class="kw">static boolean isNonValidNumber(double var0) {
      class="kw">return Double.isNaN(var0) || Double.isInfinite(var0);
   }

   class="kw">public class="kw">static boolean isZeroDirection(double var0, double var2, double var4) {
      class="kw">return BlockIterator.FastMath.eq(var0, 0.0) && BlockIterator.FastMath.eq(var2, 0.0) && BlockIterator.FastMath.eq(var4, 0.0);
   }

   class="kw">private class="kw">static double intersection(double var0, double var2, double var4, double var6, double var8, double var10) {
      double var12 = 0.0;
      if (var6 < 0.0) {
         double var14 = -var0 / var6;
         double var16 = var4 + var10 * var14;
         double var18 = var2 + var8 * var14;
         if (var14 > var12
            && BlockIterator.FastMath.gEq(var16, 0.0)
            && BlockIterator.FastMath.sEq(var16, 1.0)
            && BlockIterator.FastMath.gEq(var18, 0.0)
            && BlockIterator.FastMath.sEq(var18, 1.0)) {
            var12 = var14;
         }
      } else if (var6 > 0.0) {
         double var20 = (1.0 - var0) / var6;
         double var25 = var4 + var10 * var20;
         double var30 = var2 + var8 * var20;
         if (var20 > var12
            && BlockIterator.FastMath.gEq(var25, 0.0)
            && BlockIterator.FastMath.sEq(var25, 1.0)
            && BlockIterator.FastMath.gEq(var30, 0.0)
            && BlockIterator.FastMath.sEq(var30, 1.0)) {
            var12 = var20;
         }
      }

      if (var8 < 0.0) {
         double var21 = -var2 / var8;
         double var26 = var0 + var6 * var21;
         double var31 = var4 + var10 * var21;
         if (var21 > var12
            && BlockIterator.FastMath.gEq(var26, 0.0)
            && BlockIterator.FastMath.sEq(var26, 1.0)
            && BlockIterator.FastMath.gEq(var31, 0.0)
            && BlockIterator.FastMath.sEq(var31, 1.0)) {
            var12 = var21;
         }
      } else if (var8 > 0.0) {
         double var22 = (1.0 - var2) / var8;
         double var27 = var0 + var6 * var22;
         double var32 = var4 + var10 * var22;
         if (var22 > var12
            && BlockIterator.FastMath.gEq(var27, 0.0)
            && BlockIterator.FastMath.sEq(var27, 1.0)
            && BlockIterator.FastMath.gEq(var32, 0.0)
            && BlockIterator.FastMath.sEq(var32, 1.0)) {
            var12 = var22;
         }
      }

      if (var10 < 0.0) {
         double var23 = -var4 / var10;
         double var28 = var0 + var6 * var23;
         double var33 = var2 + var8 * var23;
         if (var23 > var12
            && BlockIterator.FastMath.gEq(var28, 0.0)
            && BlockIterator.FastMath.sEq(var28, 1.0)
            && BlockIterator.FastMath.gEq(var33, 0.0)
            && BlockIterator.FastMath.sEq(var33, 1.0)) {
            var12 = var23;
         }
      } else if (var10 > 0.0) {
         double var24 = (1.0 - var4) / var10;
         double var29 = var0 + var6 * var24;
         double var34 = var2 + var8 * var24;
         if (var24 > var12
            && BlockIterator.FastMath.gEq(var29, 0.0)
            && BlockIterator.FastMath.sEq(var29, 1.0)
            && BlockIterator.FastMath.gEq(var34, 0.0)
            && BlockIterator.FastMath.sEq(var34, 1.0)) {
            var12 = var24;
         }
      }

      class="kw">return var12;
   }

   @FunctionalInterface
   class="kw">public class="kw">interface BlockIteratorProcedure {
      boolean accept(int var1, int var2, int var3, double var4, double var6, double var8, double var10, double var12, double var14);
   }

   @FunctionalInterface
   class="kw">public class="kw">interface BlockIteratorProcedurePlus1<T> {
      boolean accept(int var1, int var2, int var3, double var4, double var6, double var8, double var10, double var12, double var14, T var16);
   }

   class="kw">static class FastMath {
      class="kw">static class="kw">final double TWO_POWER_52 = 4.5035996E15F;
      class="kw">static class="kw">final double ROUNDING_ERROR = 1.0E-15;

      FastMath() {
      }

      class="kw">static boolean eq(double var0, double var2) {
         class="kw">return abs(var0 - var2) < 1.0E-15;
      }

      class="kw">static boolean sEq(double var0, double var2) {
         class="kw">return var0 <= var2 + 1.0E-15;
      }

      class="kw">static boolean gEq(double var0, double var2) {
         class="kw">return var0 >= var2 - 1.0E-15;
      }

      class="kw">static double abs(double var0) {
         class="kw">return var0 < 0.0 ? -var0 : var0;
      }

      class="kw">static long fastFloor(double var0) {
         if (!(var0 >= 4.5035996E15F) && !(var0 <= -4.5035996E15F)) {
            long var2 = (long)var0;
            if (var0 < 0.0 && var2 != var0) {
               var2--;
            }

            class="kw">return var2 == 0L ? (long)(var0 * var2) : var2;
         } else {
            class="kw">return (long)var0;
         }
      }
   }
}