Delimiter class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.positionproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/FieldFunctionPositionProvider.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
max |
|
double |
min |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
boolean |
isInsideboolean isInside(double var1) |
Исходный код
Показать/скрыть
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 java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class FieldFunctionPositionProvider class="kw">extends PositionProvider {
@Nonnull
class="kw">private class="kw">final Density field;
@Nonnull
class="kw">private class="kw">final List<FieldFunctionPositionProvider.Delimiter> delimiters;
@Nonnull
class="kw">private class="kw">final PositionProvider positionProvider;
@Nonnull
class="kw">private class="kw">final PositionProvider.Context rChildContext;
@Nonnull
class="kw">private class="kw">final Density.Context rDensityContext;
@Nonnull
class="kw">private PositionProvider.Context rContext;
@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) {
FieldFunctionPositionProvider.this.rDensityContext.position = var1;
FieldFunctionPositionProvider.this.rDensityContext.positionsAnchor = FieldFunctionPositionProvider.this.rContext.anchor;
FieldFunctionPositionProvider.this.rDensityContext.densityAnchor = FieldFunctionPositionProvider.this.rContext.anchor;
FieldFunctionPositionProvider.this.rDensityContext.graphNode = FieldFunctionPositionProvider.this.rContext.graphNode;
double var3 = FieldFunctionPositionProvider.this.field.process(FieldFunctionPositionProvider.this.rDensityContext);
for (FieldFunctionPositionProvider.Delimiter var6 : FieldFunctionPositionProvider.this.delimiters) {
if (var6.isInside(var3)) {
FieldFunctionPositionProvider.this.rContext.pipe.accept(var1, var2);
class="kw">return;
}
}
}
};
class="kw">public FieldFunctionPositionProvider(@Nonnull Density var1, @Nonnull PositionProvider var2) {
this.field = var1;
this.positionProvider = var2;
this.delimiters = new ArrayList<>();
this.rChildContext = new PositionProvider.Context();
this.rDensityContext = new Density.Context();
this.rContext = new PositionProvider.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;
}
class="kw">public void addDelimiter(double var1, double var3) {
FieldFunctionPositionProvider.Delimiter var5 = new FieldFunctionPositionProvider.Delimiter();
var5.min = var1;
var5.max = var3;
this.delimiters.add(var5);
}
class="kw">private class="kw">static class Delimiter {
double min;
double max;
class="kw">private Delimiter() {
}
boolean isInside(double var1) {
class="kw">return var1 >= this.min && var1 < this.max;
}
}
}