ClustersPositionProvider class

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

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

extends: PositionProvider

Методы (3)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2)
public void acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2)
if if(var2.stop)

Исходный код

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

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

class="kw">public class ClustersPositionProvider class="kw">extends PositionProvider {
   @Nonnull
   class="kw">private class="kw">final PositionProvider clusterPositions;
   @Nonnull
   class="kw">private class="kw">final PositionProvider distributorPositions;
   @Nonnull
   class="kw">private class="kw">final Bounds3d clusterBounds;
   class="kw">private class="kw">final Bounds3d clusterBoundsFlipped;
   @Nonnull
   class="kw">private class="kw">final Bounds3d rDistributionBounds;
   @Nonnull
   class="kw">private class="kw">final PositionProvider.Context rDistributionContext;
   @Nonnull
   class="kw">private class="kw">final Bounds3d rClusterBounds;
   @Nonnull
   class="kw">private class="kw">final PositionProvider.Context rClusterContext;
   @Nonnull
   class="kw">private PositionProvider.Context rContext;
   @Nonnull
   class="kw">private Control rControl;
   @Nonnull
   class="kw">private class="kw">final Pipe.One<Vector3d> rDistributionPipe = new Pipe.One<Vector3d>() {
      class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
         ClustersPositionProvider.this.rClusterBounds.assign(ClustersPositionProvider.this.clusterBounds);
         ClustersPositionProvider.this.rClusterBounds.offset(var1);
         ClustersPositionProvider.this.rClusterBounds.intersect(ClustersPositionProvider.this.rContext.bounds);
         ClustersPositionProvider.this.rClusterContext.assign(ClustersPositionProvider.this.rContext);
         ClustersPositionProvider.this.rClusterContext.bounds = ClustersPositionProvider.this.rClusterBounds;
         ClustersPositionProvider.this.rClusterContext.anchor = var1;
         ClustersPositionProvider.this.rControl = var2;
         ClustersPositionProvider.this.rClusterContext.pipe = ClustersPositionProvider.this.rClusterPipe;
         ClustersPositionProvider.this.clusterPositions.generate(ClustersPositionProvider.this.rClusterContext);
      }
   };
   @Nonnull
   class="kw">private class="kw">final Pipe.One<Vector3d> rClusterPipe = new Pipe.One<Vector3d>() {
      class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
         if (var2.stop) {
            ClustersPositionProvider.this.rControl.stop = true;
         } else {
            ClustersPositionProvider.this.rContext.pipe.accept(var1, var2);
         }
      }
   };

   class="kw">public ClustersPositionProvider(@Nonnull PositionProvider var1, @Nonnull PositionProvider var2, @Nonnull Bounds3d var3) {
      this.clusterPositions = var1;
      this.distributorPositions = var2;
      this.clusterBounds = var3.clone();
      this.clusterBoundsFlipped = this.clusterBounds.clone();
      this.clusterBoundsFlipped.flipOnOriginPoint();
      this.rDistributionBounds = new Bounds3d();
      this.rDistributionContext = new PositionProvider.Context();
      this.rClusterBounds = new Bounds3d();
      this.rClusterContext = new PositionProvider.Context();
      this.rContext = new PositionProvider.Context();
      this.rControl = new Control();
   }

   @Override
   class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
      this.rContext = var1;
      this.rDistributionBounds.assign(var1.bounds);
      this.rDistributionBounds.stack(this.clusterBoundsFlipped);
      this.rDistributionContext.assign(var1);
      this.rDistributionContext.bounds = this.rDistributionBounds;
      this.rDistributionContext.pipe = this.rDistributionPipe;
      this.distributorPositions.generate(this.rDistributionContext);
      this.rDistributionContext.clearReferences();
      this.rClusterContext.clearReferences();
      this.rContext = PositionProvider.Context.DEFAULT_INSTANCE;
      this.rControl.reset();
   }
}