TriangularGrid2dPositionProvider class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.positionproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/TriangularGrid2dPositionProvider.java
extends: PositionProvider
Поля (10)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
Y |
|
|
return |
|
int |
var2 |
|
int |
var2 |
|
int |
var3 |
|
int |
var3 |
|
double |
var3 |
|
int |
var4 |
|
double |
var5 |
|
double |
var7 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
double |
firstGridZdouble firstGridZ(int var0, double var1) |
|
|
for for(int var4 = var2; var4 <= var3; var4++) |
|
|
for for(double var9 = var5; var9 <= var7; var9++) |
|
|
if if(this.rControl.stop) |
|
|
if if(var2 * X_HEIGHT < var0) |
|
|
if if(var0 % 2 == 0) |
|
|
if if(var4 + 0.5 < var1) |
|
|
if if(var3 < var1) |
static |
double |
lastGridZdouble lastGridZ(int var0, double var1) |
static |
int |
toCellGridExclusiveint toCellGridExclusive(double var0) |
static |
int |
toCellGridInclusiveint toCellGridInclusive(double var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class TriangularGrid2dPositionProvider class="kw">extends PositionProvider {
class="kw">private class="kw">static class="kw">final double Y = 0.0;
class="kw">private class="kw">static class="kw">final double SPACING = 1.0;
class="kw">private class="kw">static class="kw">final double HALF_SPACING = 0.5;
class="kw">private class="kw">static class="kw">final double X_HEIGHT = Math.sqrt(0.75);
class="kw">private class="kw">static class="kw">final double X_HEIGHT_INVERSE = 1.0 / X_HEIGHT;
@Nonnull
class="kw">private class="kw">final Vector3d rPosition = new Vector3d();
@Nonnull
class="kw">private class="kw">final Control rControl = new Control();
class="kw">public TriangularGrid2dPositionProvider() {
}
@Override
class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
if (!(var1.bounds.min.y > 0.0) && !(var1.bounds.max.y <= 0.0)) {
int var2 = toCellGridInclusive(var1.bounds.min.x);
int var3 = toCellGridExclusive(var1.bounds.max.x);
this.rControl.reset();
for (int var4 = var2; var4 <= var3; var4++) {
double var5 = firstGridZ(var4, var1.bounds.min.z);
double var7 = lastGridZ(var4, var1.bounds.max.z);
for (double var9 = var5; var9 <= var7; var9++) {
this.rPosition.set(var4 * X_HEIGHT, 0.0, var9);
if (this.rControl.stop) {
class="kw">return;
}
assert var1.bounds.contains(this.rPosition);
var1.pipe.accept(this.rPosition, this.rControl);
}
}
}
}
class="kw">private class="kw">static int toCellGridInclusive(double var0) {
int var2 = (int)Math.floor(Math.nextUp(var0) * X_HEIGHT_INVERSE);
if (var2 * X_HEIGHT < var0) {
var2++;
}
class="kw">return var2;
}
class="kw">private class="kw">static int toCellGridExclusive(double var0) {
class="kw">return (int)Math.floor(Math.nextDown(var0) * X_HEIGHT_INVERSE);
}
class="kw">private class="kw">static double firstGridZ(int var0, double var1) {
if (var0 % 2 == 0) {
int var4 = (int)Math.floor(Math.nextUp(var1 - 0.5));
if (var4 + 0.5 < var1) {
var4++;
}
class="kw">return var4 + 0.5;
} else {
int var3 = (int)Math.floor(Math.nextUp(var1));
if (var3 < var1) {
var3++;
}
class="kw">return var3;
}
}
class="kw">private class="kw">static double lastGridZ(int var0, double var1) {
double var3 = Math.nextDown(var1);
class="kw">return var0 % 2 == 0 ? Math.floor(var3 - 0.5) + 0.5 : Math.floor(var3);
}
}