SurfacePattern class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/patterns/SurfacePattern.java

extends: Pattern

Поля (14)

МодификаторыТипИмя
public static final Codec<SurfacePattern.Facing> CODEC
U, D, E, W, S, N
break
break
break
break
break
int var10
Vector3i var13
Vector3i var14
int var15
Bounds3i var19
int var2
int var2

Методы (14)

МодификаторыВозвратСигнатура
Facing Facing()
private void applyFacingvoid applyFacing(@Nonnull Vector3i var1, @Nonnull SurfacePattern.Facing var2)
for for(Vector3i var21 : this.surfacePositions)
for for(Vector3i var22 : this.originPositions)
for for(Vector3i var25 : this.surfacePositions)
for for(Vector3i var26 : this.originPositions)
for for(Vector3i var3 : this.originPositions)
for for(Vector3i var5 : this.surfacePositions)
switch switch(var2)
private void toDvoid toD(@Nonnull Vector3i var1)
private void toEvoid toE(@Nonnull Vector3i var1)
private void toNvoid toN(@Nonnull Vector3i var1)
private void toSvoid toS(@Nonnull Vector3i var1)
private void toWvoid toW(@Nonnull Vector3i var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.math.Calculator;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class SurfacePattern class="kw">extends Pattern {
   @Nonnull
   class="kw">private class="kw">final Pattern wallPattern;
   @Nonnull
   class="kw">private class="kw">final Pattern originPattern;
   @Nonnull
   class="kw">private class="kw">final List<Vector3i> surfacePositions;
   @Nonnull
   class="kw">private class="kw">final List<Vector3i> originPositions;
   @Nonnull
   class="kw">private class="kw">final Bounds3i bounds_voxelGrid;
   @Nonnull
   class="kw">private class="kw">final Vector3i rChildPosition;
   @Nonnull
   class="kw">private class="kw">final Pattern.Context rChildContext;

   class="kw">public SurfacePattern(@Nonnull Pattern var1, @Nonnull Pattern var2, double var3, double var5, @Nonnull SurfacePattern.Facing var7, int var8, int var9) {
      this.wallPattern = var1;
      this.originPattern = var2;
      this.rChildPosition = new Vector3i();
      this.rChildContext = new Pattern.Context();
      int var10 = -1 - var8;
      this.surfacePositions = new ArrayList<>(1);

      for (int var11 = -((int)var3) - 1; var11 <= (int)var3 + 1; var11++) {
         for (int var12 = -((int)var3) - 1; var12 <= (int)var3 + 1; var12++) {
            if (!(Calculator.distance(var11, var12, 0.0, 0.0) > var3)) {
               Vector3i var13 = new Vector3i(var11, var10, var12);
               this.surfacePositions.add(var13);
            }
         }
      }

      int var15 = var9;
      this.originPositions = new ArrayList<>(1);

      for (int var16 = -((int)var5) - 1; var16 <= (int)var5 + 1; var16++) {
         for (int var20 = -((int)var5) - 1; var20 <= (int)var5 + 1; var20++) {
            if (!(Calculator.distance(var16, var20, 0.0, 0.0) > var5)) {
               Vector3i var14 = new Vector3i(var16, var15, var20);
               this.originPositions.add(var14);
            }
         }
      }

      for (Vector3i var21 : this.surfacePositions) {
         this.applyFacing(var21, var7);
      }

      for (Vector3i var22 : this.originPositions) {
         this.applyFacing(var22, var7);
      }

      Bounds3i var19 = var1.getBounds_voxelGrid().clone();
      if (!this.surfacePositions.isEmpty()) {
         this.bounds_voxelGrid = var19.clone().offset(this.surfacePositions.getFirst());
      } else {
         this.bounds_voxelGrid = new Bounds3i();
      }

      for (Vector3i var25 : this.surfacePositions) {
         this.bounds_voxelGrid.encompass(var19.clone().offset(var25));
      }

      var19.assign(var2.getBounds_voxelGrid());

      for (Vector3i var26 : this.originPositions) {
         this.bounds_voxelGrid.encompass(var19.clone().offset(var26));
      }
   }

   @Override
   class="kw">public boolean matches(@Nonnull Pattern.Context var1) {
      this.rChildPosition.set(var1.position);
      this.rChildContext.assign(var1);
      this.rChildContext.position = this.rChildPosition;

      for (Vector3i var3 : this.originPositions) {
         this.rChildPosition.set(var3).add(var1.position);
         if (!this.originPattern.matches(this.rChildContext)) {
            this.rChildContext.clearReferences();
            class="kw">return false;
         }
      }

      for (Vector3i var5 : this.surfacePositions) {
         this.rChildPosition.set(var5).add(var1.position);
         if (!this.wallPattern.matches(this.rChildContext)) {
            this.rChildContext.clearReferences();
            class="kw">return false;
         }
      }

      this.rChildContext.clearReferences();
      class="kw">return true;
   }

   class="kw">private void applyFacing(@Nonnull Vector3i var1, @Nonnull SurfacePattern.Facing var2) {
      class="kw">switch (var2) {
         case U:
         class="kw">default:
            break;
         case D:
            this.toD(var1);
            break;
         case E:
            this.toE(var1);
            break;
         case W:
            this.toW(var1);
            break;
         case S:
            this.toS(var1);
            break;
         case N:
            this.toN(var1);
      }
   }

   class="kw">private void toD(@Nonnull Vector3i var1) {
      var1.y = -var1.y;
   }

   class="kw">private void toN(@Nonnull Vector3i var1) {
      int var2 = var1.y;
      var1.y = var1.z;
      var1.z = var2;
   }

   class="kw">private void toS(@Nonnull Vector3i var1) {
      this.toN(var1);
      var1.z = -var1.z;
   }

   class="kw">private void toW(@Nonnull Vector3i var1) {
      int var2 = var1.y;
      var1.y = -var1.x;
      var1.x = var2;
   }

   class="kw">private void toE(@Nonnull Vector3i var1) {
      this.toW(var1);
      var1.x = -var1.x;
   }

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

   class="kw">public enum Facing {
      U,
      D,
      E,
      W,
      S,
      N;

      @Nonnull
      class="kw">public class="kw">static class="kw">final Codec<SurfacePattern.Facing> CODEC = new EnumCodec<>(SurfacePattern.Facing.class, EnumCodec.EnumStyle.LEGACY);

      Facing() {
      }
   }
}