PlaneDensity class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.density
Файл: com/hypixel/hytale/builtin/hytalegenerator/density/PlaneDensity.java
extends: Density
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
ZERO_DELTA |
|
double |
var2 |
|
|
var2 |
|
|
var2 |
|
Vector3dc |
var8 |
|
double |
var9 |
|
|
var9 |
|
|
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(this.isAnchored) |
|
|
if if(this.isPlaneHorizontal) |
|
|
if if(var7 == null) |
|
|
if if(var8 == null) |
|
|
if if(this.isPlaneHorizontal) |
private |
double |
processAnchoreddouble processAnchored(double var1, double var3, double var5, @Nullable Density.Context var7) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
class="kw">import it.unimi.dsi.fastutil.doubles.Double2DoubleFunction;
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">public class PlaneDensity class="kw">extends Density {
class="kw">public class="kw">static class="kw">final double ZERO_DELTA = 1.0E-9;
@Nonnull
class="kw">private class="kw">static class="kw">final Vector3d ZERO_VECTOR = new Vector3d();
@Nonnull
class="kw">private class="kw">final Double2DoubleFunction distanceCurve;
@Nonnull
class="kw">private class="kw">final Vector3d planeNormal;
class="kw">private class="kw">final boolean isPlaneHorizontal;
class="kw">private class="kw">final boolean isAnchored;
@Nonnull
class="kw">private class="kw">final Vector3d rNearestPoint;
@Nonnull
class="kw">private class="kw">final Vector3d rPosition;
@Nonnull
class="kw">private class="kw">final Vector3d rVectorFromPlane;
@Nonnull
class="kw">private class="kw">final Vector3d r0;
@Nonnull
class="kw">private class="kw">final Vector3d r1;
@Nonnull
class="kw">private class="kw">final Vector3d r2;
@Nonnull
class="kw">private class="kw">final Vector3d r3;
class="kw">public PlaneDensity(@Nonnull Double2DoubleFunction var1, @Nonnull Vector3d var2, boolean var3) {
this.distanceCurve = var1;
this.planeNormal = var2;
this.isPlaneHorizontal = var2.x == 0.0 && var2.z == 0.0;
this.isAnchored = var3;
this.rNearestPoint = new Vector3d();
this.rPosition = new Vector3d();
this.rVectorFromPlane = new Vector3d();
this.r0 = new Vector3d();
this.r1 = new Vector3d();
this.r2 = new Vector3d();
this.r3 = new Vector3d();
}
@Override
class="kw">public double process(@Nonnull Density.Context var1) {
if (this.planeNormal.length() == 0.0) {
class="kw">return 0.0;
}
if (this.isAnchored) {
class="kw">return this.processAnchored(var1.position.x, var1.position.y, var1.position.z, var1);
}
double var2 = 0.0;
if (this.isPlaneHorizontal) {
var2 = var1.position.y;
} else {
VectorUtil.nearestPointOnLine3d(var1.position, ZERO_VECTOR, this.planeNormal, this.rNearestPoint, this.r0, this.r1, this.r2, this.r3);
var2 = this.rNearestPoint.length();
}
class="kw">return this.distanceCurve.get(var2);
}
class="kw">private double processAnchored(double var1, double var3, double var5, @Nullable Density.Context var7) {
if (var7 == null) {
class="kw">return 0.0;
}
this.rPosition.set(var1, var3, var5);
Vector3dc var8 = var7.densityAnchor;
if (var8 == null) {
class="kw">return 0.0;
}
double var9 = 0.0;
if (this.isPlaneHorizontal) {
var9 = Math.abs(var8.y() - this.rPosition.y);
}
this.rPosition.sub(var8);
VectorUtil.nearestPointOnLine3d(this.rPosition, ZERO_VECTOR, this.planeNormal, this.rVectorFromPlane, this.r0, this.r1, this.r2, this.r3);
var9 = this.rVectorFromPlane.length();
class="kw">return this.distanceCurve.get(var9);
}
}