SomeConnectedEdgesNodeAction class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.graph.nodeactions
Файл: com/hypixel/hytale/builtin/hytalegenerator/graph/nodeactions/SomeConnectedEdgesNodeAction.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.graph.edgeactions.EdgeAction;
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 SomeConnectedEdgesNodeAction class="kw">extends NodeAction {
@Nonnull
class="kw">private class="kw">final EdgeAction edgeAction;
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 SomeConnectedEdgesNodeAction(@Nonnull EdgeAction var1, double var2, int var4) {
assert var2 >= 0.0;
this.edgeAction = 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.edgeAction.run(var1, var6);
}
this.rEdges.clear();
this.rPickedEdges.clear();
this.rNode = null;
}
}
@Override
class="kw">public double getInteractionRange(double var1) {
class="kw">return Math.max(var1, this.edgeAction.getInteractionRange(var1));
}
@Override
class="kw">public double getLongestCreatedEdgeLength() {
class="kw">return this.edgeAction.getLongestCreatedEdgeLength();
}
@Override
class="kw">public double getCausalRangeIncrement() {
class="kw">return this.edgeAction.getCausalRangeIncrement();
}
@Override
class="kw">public void viewAllPossibleContent(@Nonnull Consumer<GraphSpace.Content> var1) {
this.edgeAction.viewAllPossibleContent(var1);
}
}