TetrahedronCaveNodeShapeGenerator class

Пакет: com.hypixel.hytale.server.worldgen.cave.shape

Файл: com/hypixel/hytale/server/worldgen/cave/shape/TetrahedronCaveNodeShape.java

implements: CaveNodeShapeEnum.CaveNodeShapeGenerator

Методы (2)

МодификаторыВозвратСигнатура
abstract return new TetrahedronCaveNodeShapereturn new TetrahedronCaveNodeShape(var5)
public CaveNodeShape generateCaveNodeShapepublic CaveNodeShape generateCaveNodeShape(Random var1, CaveType var2, CaveNode var3, CaveNodeType.CaveNodeChildEntry var4, @Nonnull Vector3d var5, float var6, float var7)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape;

class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CaveNode;
class="kw">import com.hypixel.hytale.server.worldgen.util.bounds.IWorldBounds;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

@Deprecated
class="kw">public class TetrahedronCaveNodeShape class="kw">extends AbstractCaveNodeShape class="kw">implements IWorldBounds {
   @Nonnull
   class="kw">private class="kw">final Vector3d o;
   @Nonnull
   class="kw">private class="kw">final Vector3d a;
   @Nonnull
   class="kw">private class="kw">final Vector3d b;
   @Nonnull
   class="kw">private class="kw">final Vector3d c;
   @Nonnull
   class="kw">private class="kw">final Vector3d n1;
   @Nonnull
   class="kw">private class="kw">final Vector3d n2;
   @Nonnull
   class="kw">private class="kw">final Vector3d n3;
   @Nonnull
   class="kw">private class="kw">final Vector3d n4;
   class="kw">private class="kw">final int lowBoundX;
   class="kw">private class="kw">final int lowBoundY;
   class="kw">private class="kw">final int lowBoundZ;
   class="kw">private class="kw">final int highBoundX;
   class="kw">private class="kw">final int highBoundY;
   class="kw">private class="kw">final int highBoundZ;

   class="kw">public TetrahedronCaveNodeShape(@Nonnull Vector3d var1) {
      this.o = var1;
      this.a = new Vector3d(10.0, 0.0, 0.0);
      this.b = new Vector3d(0.0, 10.0, 0.0);
      this.c = new Vector3d(0.0, 0.0, 10.0);
      this.n1 = this.c.cross(this.b, new Vector3d());
      this.n2 = this.b.cross(this.a, new Vector3d());
      this.n3 = this.a.cross(this.c, new Vector3d());
      Vector3d var2 = new Vector3d(this.a).sub(this.b);
      Vector3d var3 = new Vector3d(this.c).sub(this.b);
      this.n4 = var3.cross(var2, new Vector3d());
      this.lowBoundX = (int)(var1.x - 10.0);
      this.lowBoundY = (int)(var1.y - 10.0);
      this.lowBoundZ = (int)(var1.z - 10.0);
      this.highBoundX = (int)(var1.x + 10.0);
      this.highBoundY = (int)(var1.y + 10.0);
      this.highBoundZ = (int)(var1.z + 10.0);
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getStart() {
      class="kw">return new Vector3d(this.o);
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getEnd() {
      class="kw">return new Vector3d(this.o).add(this.c);
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getAnchor(@Nonnull Vector3d var1, double var2, double var4, double var6) {
      class="kw">return CaveNodeShapeUtils.getBoxAnchor(var1, this, var2, var4, var6);
   }

   @Nonnull
   @Override
   class="kw">public IWorldBounds getBounds() {
      class="kw">return this;
   }

   @Override
   class="kw">public int getLowBoundX() {
      class="kw">return this.lowBoundX;
   }

   @Override
   class="kw">public int getLowBoundZ() {
      class="kw">return this.lowBoundZ;
   }

   @Override
   class="kw">public int getHighBoundX() {
      class="kw">return this.highBoundX;
   }

   @Override
   class="kw">public int getHighBoundZ() {
      class="kw">return this.highBoundZ;
   }

   @Override
   class="kw">public int getLowBoundY() {
      class="kw">return this.lowBoundY;
   }

   @Override
   class="kw">public int getHighBoundY() {
      class="kw">return this.highBoundY;
   }

   @Override
   class="kw">public boolean shouldReplace(int var1, double var2, double var4, int var6) {
      if (determine(this.o, this.n1, var2, var6, var4) && determine(this.o, this.n2, var2, var6, var4) && determine(this.o, this.n3, var2, var6, var4)) {
         double var7 = this.o.x + this.b.x;
         double var9 = this.o.y + this.b.y;
         double var11 = this.o.z + this.b.z;
         class="kw">return true;
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public double getFloorPosition(int var1, double var2, double var4) {
      int var6;
      for (var6 = this.getLowBoundY(); var6 < this.getHighBoundY(); var6++) {
         if (this.shouldReplace(var1, var2, var4, var6)) {
            class="kw">return var6;
         }
      }

      class="kw">return var6;
   }

   @Override
   class="kw">public double getCeilingPosition(int var1, double var2, double var4) {
      int var6;
      for (var6 = this.getHighBoundY(); var6 < this.getLowBoundY(); var6--) {
         if (this.shouldReplace(var1, var2, var4, var6)) {
            class="kw">return var6;
         }
      }

      class="kw">return var6;
   }

   class="kw">private class="kw">static boolean determine(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6) {
      class="kw">return determine(var0.x, var0.y, var0.z, var1, var2, var4, var6);
   }

   class="kw">private class="kw">static boolean determine(double var0, double var2, double var4, @Nonnull Vector3d var6, double var7, double var9, double var11) {
      double var13 = (var7 - var0) * var6.x;
      double var15 = (var9 - var2) * var6.y;
      double var17 = (var11 - var4) * var6.z;
      class="kw">return var13 + var15 + var17 >= 0.0;
   }

   class="kw">public class="kw">static class TetrahedronCaveNodeShapeGenerator class="kw">implements CaveNodeShapeEnum.CaveNodeShapeGenerator {
      class="kw">public TetrahedronCaveNodeShapeGenerator() {
      }

      @Nonnull
      @Override
      class="kw">public CaveNodeShape generateCaveNodeShape(
         Random var1, CaveType var2, CaveNode var3, CaveNodeType.CaveNodeChildEntry var4, @Nonnull Vector3d var5, float var6, float var7
      ) {
         class="kw">return new TetrahedronCaveNodeShape(var5);
      }
   }
}