SomeConnectedNodesNodeAction class

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

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

extends: NodeAction

Поля (3)

МодификаторыТипИмя
int var3
int var4
GraphSpace.Edge var6

Методы (1)

МодификаторыВозвратСигнатура
abstract for for(int var5 = 0; var5 < this.rPickedEdges.size()

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.GraphSpace;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rng.RngField;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rng.RngUtil;
class="kw">import com.hypixel.hytale.math.util.FastRandom;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class SomeConnectedNodesNodeAction class="kw">extends NodeAction {
   @Nonnull
   class="kw">private class="kw">final NodeAction nodeAction;
   class="kw">private class="kw">final double ratio;
   @Nonnull
   class="kw">private class="kw">final RngField rngField;
   @Nonnull
   class="kw">private class="kw">final FastRandom random;
   @Nonnull
   class="kw">private class="kw">final List<GraphSpace.Edge> rEdges;
   @Nonnull
   class="kw">private class="kw">final List<GraphSpace.Edge> rPickedEdges;
   @Nullable
   class="kw">private GraphSpace.Node rNode;
   @Nonnull
   class="kw">private class="kw">final Comparator<GraphSpace.Edge> EDGE_COMPARATOR = Comparator.comparing(var1x -> var1x.otherNode(this.rNode), GraphSpace.Node.DETERMINISTIC_ORDER);

   class="kw">public SomeConnectedNodesNodeAction(@Nonnull NodeAction var1, double var2, int var4) {
      assert var2 >= 0.0;
      this.nodeAction = var1;
      this.ratio = Math.max(0.0, var2);
      this.rngField = new RngField(var4);
      this.random = new FastRandom();
      this.rEdges = new ArrayList<>(1);
      this.rPickedEdges = new ArrayList<>(1);
   }

   @Override
   class="kw">public void run(@Nonnull GraphSpace var1, @Nonnull GraphSpace.Node var2) {
      if (!var2.edges().isEmpty()) {
         this.rEdges.clear();
         this.rEdges.addAll(var2.edges());
         int var3 = (int)(this.rEdges.size() * this.ratio);
         int var4 = this.rngField.get(var2.position());
         this.random.setSeed(var4);
         this.rPickedEdges.clear();
         this.rNode = var2;
         this.rEdges.sort(this.EDGE_COMPARATOR);
         RngUtil.pickElements(this.random, var3, this.rEdges, this.rPickedEdges);

         for (int var5 = 0; var5 < this.rPickedEdges.size(); var5++) {
            GraphSpace.Edge var6 = this.rPickedEdges.get(var5);
            this.nodeAction.run(var1, var6.otherNode(var2));
         }

         this.rEdges.clear();
         this.rPickedEdges.clear();
         this.rNode = null;
      }
   }

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

   @Override
   class="kw">public double getLongestCreatedEdgeLength() {
      class="kw">return this.nodeAction.getLongestCreatedEdgeLength();
   }

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

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