BoxBlockIterator class

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

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

Поля (16)

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

Методы (33)

МодификаторыВозвратСигнатура
public BoxIterationBufferpublic BoxIterationBuffer()
abstract throw new NullPointerExceptionthrow new NullPointerException("consumer is null!")
abstract throw new NullPointerExceptionthrow new NullPointerException("buffer is null!")
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("This is a utility class. Do not instantiate.")
abstract boolean acceptboolean accept(long var1, long var3, long var5)
for for(int var19 = 0; var19 < var17; var19++)
for for(int var20 = 0; var20 < var18; var20++)
for for(int var21 = 0; var21 < var18; var21++)
for for(int var23 = 0; var23 < var16; var23++)
for for(int var22 = 0; var22 < var16; var22++)
for for(int var24 = 0; var24 < var17; var24++)
static BoxBlockIterator.BoxIterationBuffer getBufferBoxBlockIterator.BoxIterationBuffer getBuffer()
if if(var0 > var6 || var2 > var8 || var4 > var10)
if if(var0x != var15.posX)
if if(var1 != var15.posY)
if if(var2x != var15.posZ)
static boolean iterateboolean iterate(@Nonnull Box var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, double var3, @Nonnull BoxBlockIterator.BoxIterationConsumer var5)
static boolean iterateboolean iterate(@Nonnull Box var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, double var3, @Nonnull BoxBlockIterator.BoxIterationConsumer var5, @Nonnull BoxBlockIterator.BoxIterationBuffer var6)
static boolean iterateboolean iterate(@Nonnull Box var0, double var1, double var3, double var5, double var7, double var9, double var11, double var13, @Nonnull BoxBlockIterator.BoxIterationConsumer var15)
static boolean iterateboolean 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)
static boolean iterateboolean 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)
static boolean iterateboolean 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)
static boolean iterateboolean iterate(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3, double var4, @Nonnull BoxBlockIterator.BoxIterationConsumer var6)
static boolean iterateboolean iterate(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, @Nonnull Vector3d var3, double var4, @Nonnull BoxBlockIterator.BoxIterationConsumer var6, @Nonnull BoxBlockIterator.BoxIterationBuffer var7)
static boolean iterateboolean 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)
static boolean iterateboolean 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)
abstract return iteratereturn iterate(var0.min, var0.max, var1, var2, var3, var5, var6)
abstract return iteratereturn iterate(var0.min, var0.max, var1, var3, var5, var7, var9, var11, var13, var15, var16)
abstract return iteratereturn iterate(var0.x, var0.y, var0.z, var1.x, var1.y, var1.z, var2, var4, var6, var8, var10, var12, var14, var16, var17)
abstract return iteratereturn 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)
static boolean iterate0boolean 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)
abstract return iterate0return iterate0(var0, var2, var4, var6, var8, var10, var12, var14, var16, var18, var20, var22, var24, var26, var27)
abstract boolean nextboolean next()

Исходный код

Показать/скрыть
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);
   }
}