RadialScanner class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.scanners
Файл: com/hypixel/hytale/builtin/hytalegenerator/scanners/RadialScanner.java
extends: Scanner
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Vector3i |
var3 |
|
List |
var4 |
|
int |
var4 |
|
int |
var5 |
|
Vector3i |
var6 |
|
int |
var6 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
acceptpublic void accept(@Nonnull Vector3i var1, @Nonnull Control var2) |
|
|
for for(var5.y = var1.min.y; var5.y < var1.max.y; var5.y++) |
|
|
for for(var5.z = var1.min.z; var5.z < var1.max.z; var5.z++) |
|
|
for for(int var7 = 0; var7 < this.positionsCount; var7++) |
|
|
for for(int var3 = 0; var3 < this.positionsCount && !this.rControl.stop; var3++) |
abstract |
|
for for(Vector3i var5 = new Vector3i(var1.min) |
|
|
if if(var2.stop) |
static |
int |
indexXint indexX(int var0) |
static |
int |
indexYint indexY(int var0) |
static |
int |
indexZint indexZ(int var0) |
Исходный код
Показать/скрыть
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.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class RadialScanner class="kw">extends Scanner {
@Nonnull
class="kw">private class="kw">final Bounds3i bounds;
@Nonnull
class="kw">private class="kw">final Scanner childScanner;
@Nonnull
class="kw">private class="kw">final byte[] sortedPositions;
class="kw">private class="kw">final int positionsCount;
@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) {
RadialScanner.this.rContextPipe.accept(var1, var2);
if (var2.stop) {
RadialScanner.this.rControl.stop = true;
}
}
};
class="kw">public RadialScanner(@Nonnull Bounds3i var1, @Nonnull Scanner var2) {
this.bounds = var1.clone();
this.childScanner = var2;
Vector3i var3 = var1.getSize();
this.positionsCount = var3.x * var3.y * var3.z;
List var4 = new ArrayList<>(this.positionsCount);
for (Vector3i var5 = new Vector3i(var1.min); var5.x < var1.max.x; var5.x++) {
for (var5.y = var1.min.y; var5.y < var1.max.y; var5.y++) {
for (var5.z = var1.min.z; var5.z < var1.max.z; var5.z++) {
var4.add(new Vector3i(var5));
}
}
}
var4.sort(Comparator.comparingDouble(Vector3i::length));
this.sortedPositions = new byte[this.positionsCount * 3];
for (int var7 = 0; var7 < this.positionsCount; var7++) {
Vector3i var6 = var4.get(var7);
this.sortedPositions[indexX(var7)] = (byte)var6.x;
this.sortedPositions[indexY(var7)] = (byte)var6.y;
this.sortedPositions[indexZ(var7)] = (byte)var6.z;
}
this.bounds.stack(var2.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.rControl.reset();
for (int var3 = 0; var3 < this.positionsCount && !this.rControl.stop; var3++) {
int var4 = this.sortedPositions[indexX(var3)];
int var5 = this.sortedPositions[indexY(var3)];
int var6 = this.sortedPositions[indexZ(var3)];
this.rPosition.set(var4, var5, var6);
this.rPosition.add(var1);
this.childScanner.scan(this.rPosition, this.rChildPipe);
}
this.rContextPipe = Pipe.getEmptyOne();
}
@Override
class="kw">public Bounds3i getBounds_voxelGrid() {
class="kw">return this.bounds;
}
class="kw">private class="kw">static int indexX(int var0) {
class="kw">return var0 * 3;
}
class="kw">private class="kw">static int indexY(int var0) {
class="kw">return var0 * 3 + 1;
}
class="kw">private class="kw">static int indexZ(int var0) {
class="kw">return var0 * 3 + 2;
}
}