ScanShape enum
Пакет: com.hypixel.hytale.builtin.hytalegenerator.scanners.deprecated
Файл: com/hypixel/hytale/builtin/hytalegenerator/scanners/deprecated/AreaScanner.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final Codec<AreaScanner.ScanShape> |
CODEC |
|
CIRCLE, |
SQUARE |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.scanners.deprecated;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.math.Calculator;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.Scanner;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector2i;
class="kw">import org.joml.Vector3i;
class="kw">public class AreaScanner class="kw">extends Scanner {
class="kw">private class="kw">final int resultCap;
@Nonnull
class="kw">private class="kw">final Scanner childScanner;
@Nonnull
class="kw">private class="kw">final List<Vector2i> scanOrder;
@Nonnull
class="kw">private class="kw">final Bounds3i bounds_voxelGrid;
class="kw">public AreaScanner(int var1, @Nonnull AreaScanner.ScanShape var2, int var3, @Nonnull Scanner var4) {
if (var1 >= 0 && var3 >= 0) {
this.resultCap = var1;
this.childScanner = var4;
this.bounds_voxelGrid = var4.getBounds_voxelGrid().clone();
Bounds3i var5 = var4.getBounds_voxelGrid().clone();
ArrayList var6 = new ArrayList<>();
Vector3i var7 = new Vector3i();
for (var7.x = -var3; var7.x <= var3; var7.x++) {
for (var7.z = -var3; var7.z <= var3; var7.z++) {
if (var2 != AreaScanner.ScanShape.CIRCLE || !(Calculator.distance(var7.x, var7.z, 0.0, 0.0) > var3)) {
var6.add(new Vector2i(var7.x, var7.z));
var5.offset(var7);
this.bounds_voxelGrid.encompass(var5);
var5.offset(var7.negate());
var7.negate();
}
}
}
this.scanOrder = VectorUtil.orderByDistanceFrom(new Vector2i(), var6);
} else {
throw new IllegalArgumentException();
}
}
@Override
class="kw">public void scan(@Nonnull Scanner.Context var1) {
if (this.resultCap != 0) {
for (Vector2i var3 : this.scanOrder) {
Vector3i var4 = new Vector3i(var1.position.x + var3.x, var1.position.y, var1.position.z + var3.y);
Scanner.Context var5 = new Scanner.Context(var1);
var5.position = var4;
this.childScanner.scan(var5);
if (var1.validPositions_out.size() >= this.resultCap) {
while (var1.validPositions_out.size() > this.resultCap) {
var1.validPositions_out.removeLast();
}
class="kw">return;
}
}
}
}
@Override
class="kw">public void scan(@Nonnull Vector3i var1, @Nonnull Pipe.One<Vector3i> var2) {
}
@Override
class="kw">public Bounds3i getBounds_voxelGrid() {
class="kw">return this.bounds_voxelGrid;
}
class="kw">public enum ScanShape {
CIRCLE,
SQUARE;
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<AreaScanner.ScanShape> CODEC = new EnumCodec<>(AreaScanner.ScanShape.class, EnumCodec.EnumStyle.LEGACY);
ScanShape() {
}
}
class="kw">public enum Verticality {
GLOBAL,
LOCAL;
Verticality() {
}
}
}