LinearScanner class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.scanners
Файл: com/hypixel/hytale/builtin/hytalegenerator/scanners/LinearScanner.java
extends: Scanner
Поля (4)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
break |
|
|
break |
|
|
break |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
acceptpublic void accept(@Nonnull Vector3i var1, @Nonnull Control var2) |
abstract |
|
for for(int var3 = this.range.getMinInclusive() |
|
|
if if(var2.stop) |
|
|
if if(this.isAscendingOrder) |
|
|
switch switch(this.axis) |
|
|
switch switch(this.axis) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.scanners;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.delimiters.RangeInt;
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.math.Axis;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class LinearScanner class="kw">extends Scanner {
@Nonnull
class="kw">private class="kw">final Axis axis;
@Nonnull
class="kw">private class="kw">final RangeInt range;
@Nonnull
class="kw">private class="kw">final Scanner childScanner;
@Nonnull
class="kw">private class="kw">final Bounds3i bounds;
class="kw">private class="kw">final boolean isAscendingOrder;
@Nonnull
class="kw">private class="kw">final Control rControl;
@Nonnull
class="kw">private class="kw">final Vector3i rPosition;
@Nonnull
class="kw">private Pipe.One<Vector3i> rContextPipe;
@Nonnull
class="kw">private class="kw">final Pipe.One<Vector3i> rChildPipe = new Pipe.One<Vector3i>() {
class="kw">public void accept(@Nonnull Vector3i var1, @Nonnull Control var2) {
LinearScanner.this.rContextPipe.accept(var1, var2);
if (var2.stop) {
LinearScanner.this.rControl.stop = true;
}
}
};
class="kw">public LinearScanner(@Nonnull Axis var1, @Nonnull RangeInt var2, @Nonnull Scanner var3, boolean var4) {
this.axis = var1;
this.range = var2;
this.childScanner = var3;
this.isAscendingOrder = var4;
this.bounds = class="kw">switch (var1) {
case X -> new Bounds3i(new Vector3i(var2.getMinInclusive(), 0, 0), new Vector3i(var2.getMaxExclusive(), 1, 1));
case Y -> new Bounds3i(new Vector3i(0, var2.getMinInclusive(), 0), new Vector3i(1, var2.getMaxExclusive(), 1));
case Z -> new Bounds3i(new Vector3i(0, 0, var2.getMinInclusive()), new Vector3i(1, 1, var2.getMaxExclusive()));
};
this.bounds.stack(var3.getBounds_voxelGrid());
this.rControl = new Control();
this.rPosition = new Vector3i();
this.rContextPipe = Pipe.getEmptyOne();
}
@Override
class="kw">public void scan(@Nonnull Scanner.Context var1) {
}
@Override
class="kw">public void scan(@Nonnull Vector3i var1, @Nonnull Pipe.One<Vector3i> var2) {
this.rContextPipe = var2;
this.rPosition.set(var1);
this.rControl.reset();
if (this.isAscendingOrder) {
for (int var3 = this.range.getMinInclusive(); var3 < this.range.getMaxExclusive() && !this.rControl.stop; var3++) {
class="kw">switch (this.axis) {
case X:
this.rPosition.x = var3 + var1.x;
break;
case Y:
this.rPosition.y = var3 + var1.y;
break;
case Z:
this.rPosition.z = var3 + var1.z;
}
this.childScanner.scan(this.rPosition, this.rChildPipe);
}
} else {
for (int var4 = this.range.getMaxExclusive() - 1; var4 >= this.range.getMinInclusive() && !this.rControl.stop; var4--) {
class="kw">switch (this.axis) {
case X:
this.rPosition.x = var4 + var1.x;
break;
case Y:
this.rPosition.y = var4 + var1.y;
break;
case Z:
this.rPosition.z = var4 + var1.z;
}
this.childScanner.scan(this.rPosition, this.rChildPipe);
}
}
this.rContextPipe = Pipe.getEmptyOne();
}
@Override
class="kw">public Bounds3i getBounds_voxelGrid() {
class="kw">return this.bounds;
}
}