LinearScanner class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/scanners/LinearScanner.java

extends: Scanner

Поля (4)

МодификаторыТипИмя
break
break
break
break

Методы (6)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(@Nonnull Vector3i var1, @Nonnull Control var2)
abstract for for(int var3 = this.range.getMinInclusive()
if if(var2.stop)
if if(this.isAscendingOrder)
switch switch(this.axis)
switch switch(this.axis)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.delimiters.RangeInt;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import com.hypixel.hytale.math.Axis;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class LinearScanner class="kw">extends Scanner {
   @Nonnull
   class="kw">private class="kw">final Axis axis;
   @Nonnull
   class="kw">private class="kw">final RangeInt range;
   @Nonnull
   class="kw">private class="kw">final Scanner childScanner;
   @Nonnull
   class="kw">private class="kw">final Bounds3i bounds;
   class="kw">private class="kw">final boolean isAscendingOrder;
   @Nonnull
   class="kw">private class="kw">final Control rControl;
   @Nonnull
   class="kw">private class="kw">final Vector3i rPosition;
   @Nonnull
   class="kw">private Pipe.One<Vector3i> rContextPipe;
   @Nonnull
   class="kw">private class="kw">final Pipe.One<Vector3i> rChildPipe = new Pipe.One<Vector3i>() {
      class="kw">public void accept(@Nonnull Vector3i var1, @Nonnull Control var2) {
         LinearScanner.this.rContextPipe.accept(var1, var2);
         if (var2.stop) {
            LinearScanner.this.rControl.stop = true;
         }
      }
   };

   class="kw">public LinearScanner(@Nonnull Axis var1, @Nonnull RangeInt var2, @Nonnull Scanner var3, boolean var4) {
      this.axis = var1;
      this.range = var2;
      this.childScanner = var3;
      this.isAscendingOrder = var4;

      this.bounds = class="kw">switch (var1) {
         case X -> new Bounds3i(new Vector3i(var2.getMinInclusive(), 0, 0), new Vector3i(var2.getMaxExclusive(), 1, 1));
         case Y -> new Bounds3i(new Vector3i(0, var2.getMinInclusive(), 0), new Vector3i(1, var2.getMaxExclusive(), 1));
         case Z -> new Bounds3i(new Vector3i(0, 0, var2.getMinInclusive()), new Vector3i(1, 1, var2.getMaxExclusive()));
      };
      this.bounds.stack(var3.getBounds_voxelGrid());
      this.rControl = new Control();
      this.rPosition = new Vector3i();
      this.rContextPipe = Pipe.getEmptyOne();
   }

   @Override
   class="kw">public void scan(@Nonnull Scanner.Context var1) {
   }

   @Override
   class="kw">public void scan(@Nonnull Vector3i var1, @Nonnull Pipe.One<Vector3i> var2) {
      this.rContextPipe = var2;
      this.rPosition.set(var1);
      this.rControl.reset();
      if (this.isAscendingOrder) {
         for (int var3 = this.range.getMinInclusive(); var3 < this.range.getMaxExclusive() && !this.rControl.stop; var3++) {
            class="kw">switch (this.axis) {
               case X:
                  this.rPosition.x = var3 + var1.x;
                  break;
               case Y:
                  this.rPosition.y = var3 + var1.y;
                  break;
               case Z:
                  this.rPosition.z = var3 + var1.z;
            }

            this.childScanner.scan(this.rPosition, this.rChildPipe);
         }
      } else {
         for (int var4 = this.range.getMaxExclusive() - 1; var4 >= this.range.getMinInclusive() && !this.rControl.stop; var4--) {
            class="kw">switch (this.axis) {
               case X:
                  this.rPosition.x = var4 + var1.x;
                  break;
               case Y:
                  this.rPosition.y = var4 + var1.y;
                  break;
               case Z:
                  this.rPosition.z = var4 + var1.z;
            }

            this.childScanner.scan(this.rPosition, this.rChildPipe);
         }
      }

      this.rContextPipe = Pipe.getEmptyOne();
   }

   @Override
   class="kw">public Bounds3i getBounds_voxelGrid() {
      class="kw">return this.bounds;
   }
}