SpawnerNodeAction class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/graph/nodeactions/SpawnerNodeAction.java

extends: NodeAction

Поля (2)

МодификаторыТипИмя
GraphSpace.Node var4
Vector3d var5

Методы (1)

МодификаторыВозвратСигнатура
if if(this.isCreateEdges)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.GraphSpace;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.contentsuppliers.ContentSupplier;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.positionproviders.PositionProvider;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.vectorproviders.VectorProvider;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class SpawnerNodeAction class="kw">extends NodeAction {
   @Nonnull
   class="kw">private class="kw">final VectorProvider offsetProvider;
   @Nonnull
   class="kw">private class="kw">final PositionProvider positionProvider;
   @Nonnull
   class="kw">private class="kw">final ContentSupplier contentSupplier;
   @Nonnull
   class="kw">private class="kw">final Bounds3d clusterBounds;
   class="kw">private class="kw">final boolean isCreateEdges;
   class="kw">private class="kw">final double maxOffsetExclusiveSqr;
   class="kw">private class="kw">final double causalRange;
   @Nonnull
   class="kw">private class="kw">final Bounds3d rLocalClusterBounds;
   @Nonnull
   class="kw">private class="kw">final Vector3d rClusterPosition;
   @Nonnull
   class="kw">private class="kw">final PositionProvider.Context rPositionsContext;
   @Nonnull
   class="kw">private class="kw">final VectorProvider.Context rOffsetContext;
   @Nonnull
   class="kw">private class="kw">final Vector3d rOffsetSamplePosition;

   class="kw">public SpawnerNodeAction(
      @Nonnull VectorProvider var1, @Nonnull PositionProvider var2, @Nonnull ContentSupplier var3, @Nonnull Bounds3d var4, double var5, boolean var7
   ) {
      assert var5 >= 0.0;
      this.offsetProvider = var1;
      this.positionProvider = var2;
      this.contentSupplier = var3;
      this.clusterBounds = var4;
      this.maxOffsetExclusiveSqr = var5 * var5;
      this.causalRange = var5 + var4.maxRangeOrthogonal();
      this.isCreateEdges = var7;
      this.rLocalClusterBounds = new Bounds3d();
      this.rClusterPosition = new Vector3d();
      this.rPositionsContext = new PositionProvider.Context();
      this.rOffsetContext = new VectorProvider.Context();
      this.rOffsetSamplePosition = new Vector3d();
   }

   @Override
   class="kw">public void run(@Nonnull GraphSpace var1, @Nonnull GraphSpace.Node var2) {
      this.rOffsetSamplePosition.set(var2.position());
      this.rOffsetContext.assign(this.rOffsetSamplePosition, null, var2);
      this.offsetProvider.process(this.rOffsetContext, this.rClusterPosition);
      this.rOffsetContext.clearReferences();
      if (!(this.rClusterPosition.lengthSquared() >= this.maxOffsetExclusiveSqr)) {
         this.rClusterPosition.add(var2.position());
         this.rLocalClusterBounds.assign(this.clusterBounds);
         this.rLocalClusterBounds.offset(this.rClusterPosition);
         this.rPositionsContext.bounds.assign(this.rLocalClusterBounds);
         this.rPositionsContext.graphNode = var2;
         this.rPositionsContext.anchor = this.rClusterPosition;
         this.rPositionsContext.pipe = (var3, var4) -> {
            assert this.rLocalClusterBounds.contains(var3);
            Vector3d var5 = new Vector3d(var3);
            var1.schedule(() -> {
               GraphSpace.Node var4 = var1.createNode(var5);
               var4.setContent(this.contentSupplier.get(var4));
               if (this.isCreateEdges) {
                  var1.getOrCreateEdge(var2, var4);
               }
            });
         };
         this.positionProvider.generate(this.rPositionsContext);
         this.rPositionsContext.clearReferences();
      }
   }

   @Override
   class="kw">public double getInteractionRange(double var1) {
      class="kw">return this.causalRange;
   }

   @Override
   class="kw">public double getLongestCreatedEdgeLength() {
      class="kw">return this.isCreateEdges ? this.causalRange : 0.0;
   }

   @Override
   class="kw">public double getCausalRangeIncrement() {
      class="kw">return 0.0;
   }

   @Override
   class="kw">public void viewAllPossibleContent(@Nonnull Consumer<GraphSpace.Content> var1) {
      this.contentSupplier.viewAllPossibleContent(var1);
   }
}