LineIterator class

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

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

implements: Iterator<Vector3i>

Поля (7)

МодификаторыТипИмя
Vector3i var1
Vector3i var2
Vector3i var3
int var7
int var8
int var9
final int x_inc

Методы (17)

МодификаторыВозвратСигнатура
abstract throw new NoSuchElementExceptionthrow new NoSuchElementException()
abstract return new Vector3ireturn new Vector3i(this.pointX, this.pointY, this.pointZ)
if if(this.l >= this.m && this.l >= this.n)
if if(this.l >= this.m && this.l >= this.n)
if if(this.l >= this.m && this.l >= this.n)
if if(this.i == this.l)
if if(this.i > this.l)
if if(this.err1 > 0)
if if(this.err2 > 0)
if if(this.i == this.m)
if if(this.i > this.m)
if if(this.err1 > 0)
if if(this.err2 > 0)
if if(this.i == this.n)
if if(this.i > this.n)
if if(this.err1 > 0)
if if(this.err2 > 0)

Исходный код

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

class="kw">import java.util.Iterator;
class="kw">import java.util.NoSuchElementException;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class LineIterator class="kw">implements Iterator<Vector3i> {
   class="kw">private class="kw">final int x_inc;
   class="kw">private class="kw">final int y_inc;
   class="kw">private class="kw">final int z_inc;
   class="kw">private class="kw">final int l;
   class="kw">private class="kw">final int m;
   class="kw">private class="kw">final int n;
   class="kw">private class="kw">final int dx2;
   class="kw">private class="kw">final int dy2;
   class="kw">private class="kw">final int dz2;
   class="kw">private int i;
   class="kw">private int err1;
   class="kw">private int err2;
   class="kw">private int pointX;
   class="kw">private int pointY;
   class="kw">private int pointZ;

   class="kw">public LineIterator(int var1, int var2, int var3, int var4, int var5, int var6) {
      this.pointX = var1;
      this.pointY = var2;
      this.pointZ = var3;
      int var7 = var4 - var1;
      int var8 = var5 - var2;
      int var9 = var6 - var3;
      this.x_inc = var7 < 0 ? -1 : 1;
      this.y_inc = var8 < 0 ? -1 : 1;
      this.z_inc = var9 < 0 ? -1 : 1;
      this.l = Math.abs(var7);
      this.m = Math.abs(var8);
      this.n = Math.abs(var9);
      this.dx2 = this.l << 1;
      this.dy2 = this.m << 1;
      this.dz2 = this.n << 1;
      if (this.l >= this.m && this.l >= this.n) {
         this.err1 = this.dy2 - this.l;
         this.err2 = this.dz2 - this.l;
      } else if (this.m >= this.l && this.m >= this.n) {
         this.err1 = this.dx2 - this.m;
         this.err2 = this.dz2 - this.m;
      } else {
         this.err1 = this.dx2 - this.n;
         this.err2 = this.dy2 - this.n;
      }
   }

   @Override
   class="kw">public boolean hasNext() {
      if (this.l >= this.m && this.l >= this.n) {
         class="kw">return this.i <= this.l;
      } else {
         class="kw">return this.m >= this.l && this.m >= this.n ? this.i <= this.m : this.i <= this.n;
      }
   }

   @Nonnull
   class="kw">public Vector3i next() {
      if (this.l >= this.m && this.l >= this.n) {
         if (this.i == this.l) {
            this.i++;
            class="kw">return new Vector3i(this.pointX, this.pointY, this.pointZ);
         }

         if (this.i > this.l) {
            throw new NoSuchElementException();
         }

         Vector3i var3 = new Vector3i(this.pointX, this.pointY, this.pointZ);
         this.pointX = this.pointX + this.x_inc;
         if (this.err1 > 0) {
            this.pointY = this.pointY + this.y_inc;
            this.err1 = this.err1 - this.dx2;
         }

         this.err1 = this.err1 + this.dy2;
         if (this.err2 > 0) {
            this.pointZ = this.pointZ + this.z_inc;
            this.err2 = this.err2 - this.dx2;
         }

         this.err2 = this.err2 + this.dz2;
         this.i++;
         class="kw">return var3;
      } else if (this.m >= this.l && this.m >= this.n) {
         if (this.i == this.m) {
            this.i++;
            class="kw">return new Vector3i(this.pointX, this.pointY, this.pointZ);
         }

         if (this.i > this.m) {
            throw new NoSuchElementException();
         }

         Vector3i var2 = new Vector3i(this.pointX, this.pointY, this.pointZ);
         if (this.err1 > 0) {
            this.pointX = this.pointX + this.x_inc;
            this.err1 = this.err1 - this.dy2;
         }

         this.err1 = this.err1 + this.dx2;
         this.pointY = this.pointY + this.y_inc;
         if (this.err2 > 0) {
            this.pointZ = this.pointZ + this.z_inc;
            this.err2 = this.err2 - this.dy2;
         }

         this.err2 = this.err2 + this.dz2;
         this.i++;
         class="kw">return var2;
      } else {
         if (this.i == this.n) {
            this.i++;
            class="kw">return new Vector3i(this.pointX, this.pointY, this.pointZ);
         }

         if (this.i > this.n) {
            throw new NoSuchElementException();
         }

         Vector3i var1 = new Vector3i(this.pointX, this.pointY, this.pointZ);
         if (this.err1 > 0) {
            this.pointX = this.pointX + this.x_inc;
            this.err1 = this.err1 - this.dz2;
         }

         this.err1 = this.err1 + this.dx2;
         if (this.err2 > 0) {
            this.pointY = this.pointY + this.y_inc;
            this.err2 = this.err2 - this.dz2;
         }

         this.err2 = this.err2 + this.dy2;
         this.pointZ = this.pointZ + this.z_inc;
         this.i++;
         class="kw">return var1;
      }
   }
}