HyCodeYourTale
classpublicPriority 3

FloatContainer3d

com.hypixel.hytale.builtin.hytalegenerator.newsystem.containers.FloatContainer3d

4

Methods

4

Public Methods

4

Fields

1

Constructors

Constructors

public
FloatContainer3d(Bounds3i bounds_voxelGrid, float outOfBoundsValue)

Methods

Public Methods (4)

public
float get(Vector3i position_voxelGrid)
public
Bounds3i getBounds_voxelGrid()
@Nonnull
public
void moveMinTo(Vector3i min_voxelGrid)
public
void set(Vector3i position_voxelGrid, float value)

Fields

Private/Package Fields (4)

privateBounds3i bounds_voxelGrid
privatefloat[] data
privatefloat outOfBoundsValue
privateVector3i size_voxelGrid

Related Classes

Source Code

package com.hypixel.hytale.builtin.hytalegenerator.newsystem.containers;

import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
import com.hypixel.hytale.builtin.hytalegenerator.newsystem.GridUtils;
import com.hypixel.hytale.math.vector.Vector3i;
import javax.annotation.Nonnull;

public class FloatContainer3d {
   private final Bounds3i bounds_voxelGrid;
   private final Vector3i size_voxelGrid;
   private final float[] data;
   private final float outOfBoundsValue;

   public FloatContainer3d(@Nonnull Bounds3i bounds_voxelGrid, float outOfBoundsValue) {
      this.bounds_voxelGrid = bounds_voxelGrid.clone();
      this.size_voxelGrid = bounds_voxelGrid.getSize();
      this.data = new float[this.size_voxelGrid.x * this.size_voxelGrid.y * this.size_voxelGrid.z];
      this.outOfBoundsValue = outOfBoundsValue;
   }

   public float get(@Nonnull Vector3i position_voxelGrid) {
      if (!this.bounds_voxelGrid.contains(position_voxelGrid)) {
         return this.outOfBoundsValue;
      } else {
         int index = GridUtils.toIndexFromPositionYXZ(position_voxelGrid, this.bounds_voxelGrid);
         return this.data[index];
      }
   }

   @Nonnull
   public Bounds3i getBounds_voxelGrid() {
      return this.bounds_voxelGrid;
   }

   public void set(@Nonnull Vector3i position_voxelGrid, float value) {
      assert this.bounds_voxelGrid.contains(position_voxelGrid);

      int index = GridUtils.toIndexFromPositionYXZ(position_voxelGrid, this.bounds_voxelGrid);
      this.data[index] = value;
   }

   public void moveMinTo(@Nonnull Vector3i min_voxelGrid) {
      Vector3i oldMin_voxelGrid = this.bounds_voxelGrid.min.clone().scale(-1);
      this.bounds_voxelGrid.offset(oldMin_voxelGrid);
      this.bounds_voxelGrid.offset(min_voxelGrid);
   }
}