CuboidPattern class

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

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

extends: Pattern

Методы (3)

МодификаторыВозвратСигнатура
for for(this.rChildPosition.x = this.rScanMin.x; this.rChildPosition.x <= this.rScanMax.x; this.rChildPosition.x++)
for for(this.rChildPosition.z = this.rScanMin.z; this.rChildPosition.z <= this.rScanMax.z; this.rChildPosition.z++)
for for(this.rChildPosition.y = this.rScanMin.y; this.rChildPosition.y <= this.rScanMax.y; this.rChildPosition.y++)

Исходный код

Показать/скрыть
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.math.vector.Vector3iUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class CuboidPattern class="kw">extends Pattern {
   @Nonnull
   class="kw">private class="kw">final Pattern subPattern;
   @Nonnull
   class="kw">private class="kw">final Vector3i min;
   @Nonnull
   class="kw">private class="kw">final Vector3i max;
   @Nonnull
   class="kw">private class="kw">final Bounds3i bounds_voxelGrid;
   @Nonnull
   class="kw">private class="kw">final Vector3i rScanMin;
   @Nonnull
   class="kw">private class="kw">final Vector3i rScanMax;
   @Nonnull
   class="kw">private class="kw">final Vector3i rChildPosition;
   @Nonnull
   class="kw">private class="kw">final Pattern.Context rChildContext;

   class="kw">public CuboidPattern(@Nonnull Pattern var1, @Nonnull Vector3i var2, @Nonnull Vector3i var3) {
      this.subPattern = var1;
      this.min = var2;
      this.max = var3;
      this.bounds_voxelGrid = new Bounds3i(var2, new Vector3i(var3).add(Vector3iUtil.ALL_ONES));
      this.bounds_voxelGrid.stack(var1.getBounds_voxelGrid());
      this.rScanMin = new Vector3i();
      this.rScanMax = new Vector3i();
      this.rChildPosition = new Vector3i();
      this.rChildContext = new Pattern.Context();
   }

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

      for (this.rChildPosition.x = this.rScanMin.x; this.rChildPosition.x <= this.rScanMax.x; this.rChildPosition.x++) {
         for (this.rChildPosition.z = this.rScanMin.z; this.rChildPosition.z <= this.rScanMax.z; this.rChildPosition.z++) {
            for (this.rChildPosition.y = this.rScanMin.y; this.rChildPosition.y <= this.rScanMax.y; this.rChildPosition.y++) {
               if (!var1.materialSpace.getBounds().contains(this.rChildPosition)) {
                  this.rChildContext.clearReferences();
                  class="kw">return false;
               }

               if (!this.subPattern.matches(this.rChildContext)) {
                  this.rChildContext.clearReferences();
                  class="kw">return false;
               }
            }
         }
      }

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

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