TriangularGrid2dPositionProvider class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/TriangularGrid2dPositionProvider.java

extends: PositionProvider

Поля (10)

МодификаторыТипИмя
final double Y
return
int var2
int var2
int var3
int var3
double var3
int var4
double var5
double var7

Методы (11)

МодификаторыВозвратСигнатура
static double firstGridZdouble firstGridZ(int var0, double var1)
for for(int var4 = var2; var4 <= var3; var4++)
for for(double var9 = var5; var9 <= var7; var9++)
if if(this.rControl.stop)
if if(var2 * X_HEIGHT < var0)
if if(var0 % 2 == 0)
if if(var4 + 0.5 < var1)
if if(var3 < var1)
static double lastGridZdouble lastGridZ(int var0, double var1)
static int toCellGridExclusiveint toCellGridExclusive(double var0)
static int toCellGridInclusiveint toCellGridInclusive(double var0)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class TriangularGrid2dPositionProvider class="kw">extends PositionProvider {
   class="kw">private class="kw">static class="kw">final double Y = 0.0;
   class="kw">private class="kw">static class="kw">final double SPACING = 1.0;
   class="kw">private class="kw">static class="kw">final double HALF_SPACING = 0.5;
   class="kw">private class="kw">static class="kw">final double X_HEIGHT = Math.sqrt(0.75);
   class="kw">private class="kw">static class="kw">final double X_HEIGHT_INVERSE = 1.0 / X_HEIGHT;
   @Nonnull
   class="kw">private class="kw">final Vector3d rPosition = new Vector3d();
   @Nonnull
   class="kw">private class="kw">final Control rControl = new Control();

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

   @Override
   class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
      if (!(var1.bounds.min.y > 0.0) && !(var1.bounds.max.y <= 0.0)) {
         int var2 = toCellGridInclusive(var1.bounds.min.x);
         int var3 = toCellGridExclusive(var1.bounds.max.x);
         this.rControl.reset();

         for (int var4 = var2; var4 <= var3; var4++) {
            double var5 = firstGridZ(var4, var1.bounds.min.z);
            double var7 = lastGridZ(var4, var1.bounds.max.z);

            for (double var9 = var5; var9 <= var7; var9++) {
               this.rPosition.set(var4 * X_HEIGHT, 0.0, var9);
               if (this.rControl.stop) {
                  class="kw">return;
               }

               assert var1.bounds.contains(this.rPosition);
               var1.pipe.accept(this.rPosition, this.rControl);
            }
         }
      }
   }

   class="kw">private class="kw">static int toCellGridInclusive(double var0) {
      int var2 = (int)Math.floor(Math.nextUp(var0) * X_HEIGHT_INVERSE);
      if (var2 * X_HEIGHT < var0) {
         var2++;
      }

      class="kw">return var2;
   }

   class="kw">private class="kw">static int toCellGridExclusive(double var0) {
      class="kw">return (int)Math.floor(Math.nextDown(var0) * X_HEIGHT_INVERSE);
   }

   class="kw">private class="kw">static double firstGridZ(int var0, double var1) {
      if (var0 % 2 == 0) {
         int var4 = (int)Math.floor(Math.nextUp(var1 - 0.5));
         if (var4 + 0.5 < var1) {
            var4++;
         }

         class="kw">return var4 + 0.5;
      } else {
         int var3 = (int)Math.floor(Math.nextUp(var1));
         if (var3 < var1) {
            var3++;
         }

         class="kw">return var3;
      }
   }

   class="kw">private class="kw">static double lastGridZ(int var0, double var1) {
      double var3 = Math.nextDown(var1);
      class="kw">return var0 % 2 == 0 ? Math.floor(var3 - 0.5) + 0.5 : Math.floor(var3);
   }
}