BoxIterationBuffer class

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

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

Поля (10)

МодификаторыТипИмя
BoxBlockIterator.BoxIterationConsumer consumer
double mx
double my
double mz
long posX
long posY
long posZ
int signX
int signY
int signZ

Исходный код

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

class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class="kw">final class BoxBlockIterator {
   @Nonnull
   class="kw">private class="kw">static ThreadLocal<BoxBlockIterator.BoxIterationBuffer> THREAD_LOCAL_BUFFER = ThreadLocal.withInitial(BoxBlockIterator.BoxIterationBuffer::new);

   class="kw">private BoxBlockIterator() {
      throw new UnsupportedOperationException("This is a utility class. Do not instantiate.");
   }

   class="kw">public class="kw">static BoxBlockIterator.BoxIterationBuffer getBuffer() {
      class="kw">return THREAD_LOCAL_BUFFER.get();
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Box var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, double var3, @Nonnull BoxBlockIterator.BoxIterationConsumer var5
   ) {
      class="kw">return iterate(var0, var1, var2, var3, var5, getBuffer());
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Box var0,
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      double var3,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var5,
      @Nonnull BoxBlockIterator.BoxIterationBuffer var6
   ) {
      class="kw">return iterate(var0.min, var0.max, var1, var2, var3, var5, var6);
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Box var0,
      double var1,
      double var3,
      double var5,
      double var7,
      double var9,
      double var11,
      double var13,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var15
   ) {
      class="kw">return iterate(var0, var1, var3, var5, var7, var9, var11, var13, var15, getBuffer());
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Box var0,
      double var1,
      double var3,
      double var5,
      double var7,
      double var9,
      double var11,
      double var13,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var15,
      @Nonnull BoxBlockIterator.BoxIterationBuffer var16
   ) {
      class="kw">return iterate(var0.min, var0.max, var1, var3, var5, var7, var9, var11, var13, var15, var16);
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      double var14,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var16
   ) {
      class="kw">return iterate(var0, var1, var2, var4, var6, var8, var10, var12, var14, var16, getBuffer());
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      double var14,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var16,
      @Nonnull BoxBlockIterator.BoxIterationBuffer var17
   ) {
      class="kw">return iterate(var0.x, var0.y, var0.z, var1.x, var1.y, var1.z, var2, var4, var6, var8, var10, var12, var14, var16, var17);
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      @Nonnull Vector3d var3,
      double var4,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var6
   ) {
      class="kw">return iterate(var0, var1, var2, var3, var4, var6, getBuffer());
   }

   class="kw">public class="kw">static boolean iterate(
      @Nonnull Vector3d var0,
      @Nonnull Vector3d var1,
      @Nonnull Vector3d var2,
      @Nonnull Vector3d var3,
      double var4,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var6,
      @Nonnull BoxBlockIterator.BoxIterationBuffer var7
   ) {
      class="kw">return iterate(var0.x, var0.y, var0.z, var1.x, var1.y, var1.z, var2.x, var2.y, var2.z, var3.x, var3.y, var3.z, var4, var6, var7);
   }

   class="kw">public class="kw">static boolean iterate(
      double var0,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      double var14,
      double var16,
      double var18,
      double var20,
      double var22,
      double var24,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var26
   ) {
      class="kw">return iterate(var0, var2, var4, var6, var8, var10, var12, var14, var16, var18, var20, var22, var24, var26, getBuffer());
   }

   class="kw">public class="kw">static boolean iterate(
      double var0,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      double var14,
      double var16,
      double var18,
      double var20,
      double var22,
      double var24,
      @Nonnull BoxBlockIterator.BoxIterationConsumer var26,
      @Nonnull BoxBlockIterator.BoxIterationBuffer var27
   ) {
      if (var0 > var6 || var2 > var8 || var4 > var10) {
         class="kw">return true;
      } else if (var26 == null) {
         throw new NullPointerException("consumer is null!");
      } else if (var27 == null) {
         throw new NullPointerException("buffer is null!");
      } else {
         class="kw">return iterate0(var0, var2, var4, var6, var8, var10, var12, var14, var16, var18, var20, var22, var24, var26, var27);
      }
   }

   class="kw">private class="kw">static boolean iterate0(
      double var0,
      double var2,
      double var4,
      double var6,
      double var8,
      double var10,
      double var12,
      double var14,
      double var16,
      double var18,
      double var20,
      double var22,
      double var24,
      BoxBlockIterator.BoxIterationConsumer var26,
      @Nonnull BoxBlockIterator.BoxIterationBuffer var27
   ) {
      var27.consumer = var26;
      var27.mx = var6 - var0;
      var27.my = var8 - var2;
      var27.mz = var10 - var4;
      var27.signX = var18 > 0.0 ? -1 : 1;
      var27.signY = var20 > 0.0 ? -1 : 1;
      var27.signZ = var22 > 0.0 ? -1 : 1;
      double var28 = var12 + (var18 > 0.0 ? var6 : var0);
      double var30 = var14 + (var20 > 0.0 ? var8 : var2);
      double var32 = var16 + (var22 > 0.0 ? var10 : var4);
      var27.posX = (long)var28;
      var27.posY = (long)var30;
      var27.posZ = (long)var32;
      class="kw">return BlockIterator.iterate(var28, var30, var32, var18, var20, var22, var24, (var0x, var1, var2x, var3, var5, var7, var9, var11, var13, var15) -> {
         int var16 = (int)MathUtil.fastCeil((var15.signX < 0 ? 1.0 - var3 : var3) + var15.mx);
         int var17 = (int)MathUtil.fastCeil((var15.signY < 0 ? 1.0 - var5 : var5) + var15.my);
         int var18 = (int)MathUtil.fastCeil((var15.signZ < 0 ? 1.0 - var7 : var7) + var15.mz);
         if (var0x != var15.posX) {
            for (int var19 = 0; var19 < var17; var19++) {
               for (int var20 = 0; var20 < var18; var20++) {
                  if (!var15.consumer.accept(var0x, var1 + (long)var19 * var15.signY, var2x + (long)var20 * var15.signZ)) {
                     class="kw">return false;
                  }
               }
            }

            var15.posX = var0x;
         }

         if (var1 != var15.posY) {
            for (int var21 = 0; var21 < var18; var21++) {
               for (int var23 = 0; var23 < var16; var23++) {
                  if (!var15.consumer.accept(var0x + (long)var23 * var15.signX, var1, var2x + (long)var21 * var15.signZ)) {
                     class="kw">return false;
                  }
               }
            }

            var15.posY = var1;
         }

         if (var2x != var15.posZ) {
            for (int var22 = 0; var22 < var16; var22++) {
               for (int var24 = 0; var24 < var17; var24++) {
                  if (!var15.consumer.accept(var0x + (long)var22 * var15.signX, var1 + (long)var24 * var15.signY, var2x)) {
                     class="kw">return false;
                  }
               }
            }

            var15.posZ = var2x;
         }

         class="kw">return var15.consumer.next();
      }, var27);
   }

   class="kw">public class="kw">static class BoxIterationBuffer {
      BoxBlockIterator.BoxIterationConsumer consumer;
      double mx;
      double my;
      double mz;
      int signX;
      int signY;
      int signZ;
      long posX;
      long posY;
      long posZ;

      class="kw">public BoxIterationBuffer() {
      }
   }

   class="kw">public class="kw">interface BoxIterationConsumer {
      boolean next();

      boolean accept(long var1, long var3, long var5);
   }
}