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);
}
}