RotationVoxelSpace class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.voxelspace
Файл: com/hypixel/hytale/builtin/hytalegenerator/voxelspace/RotationVoxelSpace.java
implements: VoxelSpace<Material>
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Bounds3i |
var2 |
|
Material |
var4 |
|
Material |
var5 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var3 = var2.min.x; var3 < var2.max.x; var3++) |
|
|
for for(int var4 = var2.min.z; var4 < var2.max.z; var4++) |
|
|
for for(int var5 = var2.min.y; var5 < var2.max.y; var5++) |
|
|
if if(var1 == null) |
|
|
if if(var4 == null) |
private |
void |
loadPositionvoid loadPosition(int var1, int var2, int var3) |
public |
void |
setvoid set(@Nullable Material var1, int var2, int var3, int var4) |
public |
void |
setvoid set(@Nullable Material var1, @Nonnull Vector3i var2) |
public |
void |
setAllvoid setAll(@Nullable Material var1) |
public |
void |
setSourcevoid setSource(@Nonnull VoxelSpace<Material> var1, @Nonnull Vector3ic var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.voxelspace;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.material.Material;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.material.MaterialCache;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;
class="kw">public class RotationVoxelSpace class="kw">implements VoxelSpace<Material> {
@Nonnull
class="kw">private class="kw">final RotationTuple rotation_fromViewToSource;
@Nonnull
class="kw">private class="kw">final RotationTuple rotation_materialFromSourceToView;
@Nonnull
class="kw">private class="kw">final Bounds3i viewBounds;
@Nonnull
class="kw">private class="kw">final MaterialCache materialCache;
@Nonnull
class="kw">private VoxelSpace<Material> source;
@Nonnull
class="kw">private class="kw">final Vector3i anchor;
@Nonnull
class="kw">private class="kw">final Vector3i rSourcePosition;
@Nonnull
class="kw">private class="kw">final MaterialCache.MaterialKey rMaterialKey;
class="kw">public RotationVoxelSpace(@Nonnull RotationTuple var1, @Nonnull MaterialCache var2) {
this.rotation_fromViewToSource = var1;
this.rotation_materialFromSourceToView = var1.inverse();
this.materialCache = var2;
this.viewBounds = new Bounds3i();
this.anchor = new Vector3i();
this.setSource(NullSpace.instance(), Vector3iUtil.ZERO);
this.rSourcePosition = new Vector3i();
this.rMaterialKey = new MaterialCache.MaterialKey();
}
class="kw">public void setSource(@Nonnull VoxelSpace<Material> var1, @Nonnull Vector3ic var2) {
this.source = var1;
this.anchor.set(var2);
this.viewBounds.assign(var1.getBounds());
this.viewBounds.undoRotationAroundVoxel(this.rotation_fromViewToSource, var2);
}
class="kw">public void set(@Nullable Material var1, int var2, int var3, int var4) {
this.loadPosition(var2, var3, var4);
if (var1 == null) {
this.source.set(null, this.rSourcePosition);
} else {
this.rMaterialKey.set(var1);
Material var5 = this.materialCache.getMaterialRotated(this.rMaterialKey, this.rotation_fromViewToSource);
this.source.set(var5, this.rSourcePosition);
}
}
class="kw">public void set(@Nullable Material var1, @Nonnull Vector3i var2) {
this.set(var1, var2.x, var2.y, var2.z);
}
class="kw">public void setAll(@Nullable Material var1) {
Bounds3i var2 = this.source.getBounds();
for (int var3 = var2.min.x; var3 < var2.max.x; var3++) {
for (int var4 = var2.min.z; var4 < var2.max.z; var4++) {
for (int var5 = var2.min.y; var5 < var2.max.y; var5++) {
this.set(var1, var3, var5, var4);
}
}
}
}
@Nullable
class="kw">public Material get(int var1, int var2, int var3) {
this.loadPosition(var1, var2, var3);
Material var4 = this.source.get(this.rSourcePosition);
if (var4 == null) {
class="kw">return this.materialCache.EMPTY;
}
this.rMaterialKey.set(var4);
class="kw">return this.materialCache.getMaterialRotated(this.rMaterialKey, this.rotation_materialFromSourceToView);
}
@Nullable
class="kw">public Material get(@Nonnull Vector3i var1) {
class="kw">return this.get(var1.x, var1.y, var1.z);
}
@Nonnull
@Override
class="kw">public Bounds3i getBounds() {
class="kw">return this.viewBounds;
}
class="kw">private void loadPosition(int var1, int var2, int var3) {
assert this.viewBounds.contains(var1, var2, var3);
this.rSourcePosition.set(var1, var2, var3);
this.rSourcePosition.sub(this.anchor);
this.rotation_fromViewToSource.applyRotationTo(this.rSourcePosition);
this.rSourcePosition.add(this.anchor);
assert this.source.getBounds().contains(this.rSourcePosition);
}
}