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