GridCache class

Пакет: com.hypixel.hytale.builtin.hytalegenerator

Файл: com/hypixel/hytale/builtin/hytalegenerator/GridCache.java

Методы (11)

МодификаторыВозвратСигнатура
static boolean isValidCellSizeboolean isValidCellSize(@Nonnull Vector3dc var0)
abstract assert isValidCellSizeassert isValidCellSize(var1)
public void toCellBoundsvoid toCellBounds(@Nonnull Vector3ic var1, @Nonnull Bounds3d var2)
static void toCellBoundsvoid toCellBounds(@Nonnull Vector3ic var0, @Nonnull Vector3dc var1, @Nonnull Bounds3d var2)
abstract toCellBounds toCellBounds(var1, this.cellSize, var2)
public void toCellIndexvoid toCellIndex(@Nonnull Vector3dc var1, @Nonnull Vector3i var2)
static void toCellIndexvoid toCellIndex(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, @Nonnull Vector3i var2)
static int toCellIndexint toCellIndex(double var0, double var2)
abstract toCellIndex toCellIndex(var1, this.cellSize, var2)
static double toCellMaxdouble toCellMax(int var0, double var1)
static double toCellMindouble toCellMin(int var0, double var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.cache.ConcurrentSingleFlightCache;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.GraphGenerator;
class="kw">import java.util.function.BiFunction;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;

class="kw">public class GridCache<T> {
   @Nonnull
   class="kw">private class="kw">final Vector3d cellSize;
   @Nonnull
   class="kw">private class="kw">final ConcurrentSingleFlightCache<Vector3i, GraphGenerator, T> cache;

   class="kw">public GridCache(@Nonnull Vector3dc var1, int var2, int var3, @Nonnull BiFunction<Vector3i, GraphGenerator, T> var4) {
      assert var2 >= 0;
      assert isValidCellSize(var1);
      this.cache = new ConcurrentSingleFlightCache<>(var2, var3, Vector3i::new, var4, (var0, var1x) -> {});
      this.cellSize = new Vector3d(var1);
   }

   @Nullable
   class="kw">public T getCell(@Nonnull Vector3i var1, @Nonnull GraphGenerator var2) {
      class="kw">return this.cache.get(var1, var2);
   }

   class="kw">public void toCellIndex(@Nonnull Vector3dc var1, @Nonnull Vector3i var2) {
      toCellIndex(var1, this.cellSize, var2);
   }

   class="kw">public class="kw">static void toCellIndex(@Nonnull Vector3dc var0, @Nonnull Vector3dc var1, @Nonnull Vector3i var2) {
      var2.x = toCellIndex(var0.x(), var1.x());
      var2.y = toCellIndex(var0.y(), var1.y());
      var2.z = toCellIndex(var0.z(), var1.z());
   }

   class="kw">public void toCellBounds(@Nonnull Vector3ic var1, @Nonnull Bounds3d var2) {
      toCellBounds(var1, this.cellSize, var2);
   }

   class="kw">public class="kw">static void toCellBounds(@Nonnull Vector3ic var0, @Nonnull Vector3dc var1, @Nonnull Bounds3d var2) {
      var2.min.x = toCellMin(var0.x(), var1.x());
      var2.min.y = toCellMin(var0.y(), var1.y());
      var2.min.z = toCellMin(var0.z(), var1.z());
      var2.max.x = toCellMax(var0.x(), var1.x());
      var2.max.y = toCellMax(var0.y(), var1.y());
      var2.max.z = toCellMax(var0.z(), var1.z());
   }

   class="kw">public class="kw">static int toCellIndex(double var0, double var2) {
      assert var2 > 0.0;
      class="kw">return (int)Math.floor(var0 / var2);
   }

   class="kw">public class="kw">static double toCellMin(int var0, double var1) {
      class="kw">return var0 * var1;
   }

   class="kw">public class="kw">static double toCellMax(int var0, double var1) {
      class="kw">return (var0 + 1) * var1;
   }

   class="kw">public class="kw">static boolean isValidCellSize(@Nonnull Vector3dc var0) {
      class="kw">return var0.x() > 0.0 && var0.y() > 0.0 && var0.z() > 0.0;
   }
}