Facing enum
Пакет: com.hypixel.hytale.builtin.hytalegenerator.patterns
Файл: com/hypixel/hytale/builtin/hytalegenerator/patterns/SurfacePattern.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final Codec<SurfacePattern.Facing> |
CODEC |
|
U,
D,
E,
W,
S, |
N |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.patterns;
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.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.Vector3i;
class="kw">public class SurfacePattern class="kw">extends Pattern {
@Nonnull
class="kw">private class="kw">final Pattern wallPattern;
@Nonnull
class="kw">private class="kw">final Pattern originPattern;
@Nonnull
class="kw">private class="kw">final List<Vector3i> surfacePositions;
@Nonnull
class="kw">private class="kw">final List<Vector3i> originPositions;
@Nonnull
class="kw">private class="kw">final Bounds3i bounds_voxelGrid;
@Nonnull
class="kw">private class="kw">final Vector3i rChildPosition;
@Nonnull
class="kw">private class="kw">final Pattern.Context rChildContext;
class="kw">public SurfacePattern(@Nonnull Pattern var1, @Nonnull Pattern var2, double var3, double var5, @Nonnull SurfacePattern.Facing var7, int var8, int var9) {
this.wallPattern = var1;
this.originPattern = var2;
this.rChildPosition = new Vector3i();
this.rChildContext = new Pattern.Context();
int var10 = -1 - var8;
this.surfacePositions = new ArrayList<>(1);
for (int var11 = -((int)var3) - 1; var11 <= (int)var3 + 1; var11++) {
for (int var12 = -((int)var3) - 1; var12 <= (int)var3 + 1; var12++) {
if (!(Calculator.distance(var11, var12, 0.0, 0.0) > var3)) {
Vector3i var13 = new Vector3i(var11, var10, var12);
this.surfacePositions.add(var13);
}
}
}
int var15 = var9;
this.originPositions = new ArrayList<>(1);
for (int var16 = -((int)var5) - 1; var16 <= (int)var5 + 1; var16++) {
for (int var20 = -((int)var5) - 1; var20 <= (int)var5 + 1; var20++) {
if (!(Calculator.distance(var16, var20, 0.0, 0.0) > var5)) {
Vector3i var14 = new Vector3i(var16, var15, var20);
this.originPositions.add(var14);
}
}
}
for (Vector3i var21 : this.surfacePositions) {
this.applyFacing(var21, var7);
}
for (Vector3i var22 : this.originPositions) {
this.applyFacing(var22, var7);
}
Bounds3i var19 = var1.getBounds_voxelGrid().clone();
if (!this.surfacePositions.isEmpty()) {
this.bounds_voxelGrid = var19.clone().offset(this.surfacePositions.getFirst());
} else {
this.bounds_voxelGrid = new Bounds3i();
}
for (Vector3i var25 : this.surfacePositions) {
this.bounds_voxelGrid.encompass(var19.clone().offset(var25));
}
var19.assign(var2.getBounds_voxelGrid());
for (Vector3i var26 : this.originPositions) {
this.bounds_voxelGrid.encompass(var19.clone().offset(var26));
}
}
@Override
class="kw">public boolean matches(@Nonnull Pattern.Context var1) {
this.rChildPosition.set(var1.position);
this.rChildContext.assign(var1);
this.rChildContext.position = this.rChildPosition;
for (Vector3i var3 : this.originPositions) {
this.rChildPosition.set(var3).add(var1.position);
if (!this.originPattern.matches(this.rChildContext)) {
this.rChildContext.clearReferences();
class="kw">return false;
}
}
for (Vector3i var5 : this.surfacePositions) {
this.rChildPosition.set(var5).add(var1.position);
if (!this.wallPattern.matches(this.rChildContext)) {
this.rChildContext.clearReferences();
class="kw">return false;
}
}
this.rChildContext.clearReferences();
class="kw">return true;
}
class="kw">private void applyFacing(@Nonnull Vector3i var1, @Nonnull SurfacePattern.Facing var2) {
class="kw">switch (var2) {
case U:
class="kw">default:
break;
case D:
this.toD(var1);
break;
case E:
this.toE(var1);
break;
case W:
this.toW(var1);
break;
case S:
this.toS(var1);
break;
case N:
this.toN(var1);
}
}
class="kw">private void toD(@Nonnull Vector3i var1) {
var1.y = -var1.y;
}
class="kw">private void toN(@Nonnull Vector3i var1) {
int var2 = var1.y;
var1.y = var1.z;
var1.z = var2;
}
class="kw">private void toS(@Nonnull Vector3i var1) {
this.toN(var1);
var1.z = -var1.z;
}
class="kw">private void toW(@Nonnull Vector3i var1) {
int var2 = var1.y;
var1.y = -var1.x;
var1.x = var2;
}
class="kw">private void toE(@Nonnull Vector3i var1) {
this.toW(var1);
var1.x = -var1.x;
}
@Nonnull
@Override
class="kw">public Bounds3i getBounds_voxelGrid() {
class="kw">return this.bounds_voxelGrid;
}
class="kw">public enum Facing {
U,
D,
E,
W,
S,
N;
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<SurfacePattern.Facing> CODEC = new EnumCodec<>(SurfacePattern.Facing.class, EnumCodec.EnumStyle.LEGACY);
Facing() {
}
}
}