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);
   }
}