FieldFunctionOccurrencePositionProvider class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.positionproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/FieldFunctionOccurrencePositionProvider.java
extends: PositionProvider
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
FP_RESOLUTION |
|
double |
var3 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rng.RngField;
class="kw">import com.hypixel.hytale.math.util.FastRandom;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class FieldFunctionOccurrencePositionProvider class="kw">extends PositionProvider {
class="kw">public class="kw">static class="kw">final double FP_RESOLUTION = 100.0;
@Nonnull
class="kw">private class="kw">final Density field;
@Nonnull
class="kw">private class="kw">final PositionProvider positionProvider;
@Nonnull
class="kw">private class="kw">final RngField rngField;
@Nonnull
class="kw">private class="kw">final FastRandom rRandom;
@Nonnull
class="kw">private PositionProvider.Context rContext;
@Nonnull
class="kw">private class="kw">final PositionProvider.Context rChildContext;
@Nonnull
class="kw">private class="kw">final Density.Context rDensityContext;
@Nonnull
class="kw">private class="kw">final Pipe.One<Vector3d> rChildPipe = new Pipe.One<Vector3d>() {
class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
FieldFunctionOccurrencePositionProvider.this.rDensityContext.position = var1;
FieldFunctionOccurrencePositionProvider.this.rDensityContext.positionsAnchor = FieldFunctionOccurrencePositionProvider.this.rContext.anchor;
FieldFunctionOccurrencePositionProvider.this.rDensityContext.densityAnchor = FieldFunctionOccurrencePositionProvider.this.rContext.anchor;
FieldFunctionOccurrencePositionProvider.this.rDensityContext.graphNode = FieldFunctionOccurrencePositionProvider.this.rContext.graphNode;
double var3 = 1.0 - FieldFunctionOccurrencePositionProvider.this.field.process(FieldFunctionOccurrencePositionProvider.this.rDensityContext);
FieldFunctionOccurrencePositionProvider.this.rRandom.setSeed(FieldFunctionOccurrencePositionProvider.this.rngField.get(var1.x, var1.y, var1.z));
if (!(var3 > FieldFunctionOccurrencePositionProvider.this.rRandom.nextDouble())) {
FieldFunctionOccurrencePositionProvider.this.rContext.pipe.accept(var1, var2);
}
}
};
class="kw">public FieldFunctionOccurrencePositionProvider(@Nonnull Density var1, @Nonnull PositionProvider var2, int var3) {
this.field = var1;
this.positionProvider = var2;
this.rngField = new RngField(var3);
this.rChildContext = new PositionProvider.Context();
this.rRandom = new FastRandom();
this.rContext = new PositionProvider.Context();
this.rDensityContext = new Density.Context();
}
@Override
class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
this.rContext = var1;
this.rChildContext.assign(var1);
this.rChildContext.pipe = this.rChildPipe;
this.positionProvider.generate(this.rChildContext);
this.rChildContext.clearReferences();
this.rDensityContext.clearReferences();
this.rContext = PositionProvider.Context.DEFAULT_INSTANCE;
}
}