DistanceToGraphEdgeDensity class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.density
Файл: com/hypixel/hytale/builtin/hytalegenerator/density/DistanceToGraphEdgeDensity.java
extends: Density
Поля (12)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Vector3dc |
var10 |
|
double |
var11 |
|
double |
var13 |
|
double |
var15 |
|
|
var15 |
|
|
var15 |
|
Vector3dc |
var2 |
|
double |
var3 |
|
List |
var5 |
|
double |
var6 |
|
|
var6 |
|
GraphSpace.Edge |
var9 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(int var8 = 0; var8 < var5.size() |
|
|
if if(var1.graphNode == null) |
|
|
if if(var11 >= var13) |
|
|
if if(var15 < var6) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.GraphSpace;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">public class DistanceToGraphEdgeDensity class="kw">extends Density {
@Nonnull
class="kw">private class="kw">final Vector3d rLocalPosition = new Vector3d();
@Nonnull
class="kw">private class="kw">final Vector3d rEdgeVector = new Vector3d();
class="kw">public DistanceToGraphEdgeDensity() {
}
@Override
class="kw">public double process(@Nonnull Density.Context var1) {
if (var1.graphNode == null) {
class="kw">return Double.MAX_VALUE;
}
Vector3dc var2 = var1.graphNode.position();
this.rLocalPosition.set(var1.position).sub(var2);
if (VectorUtil.isZero(this.rLocalPosition)) {
class="kw">return 0.0;
}
double var3 = this.rLocalPosition.lengthSquared();
List var5 = var1.graphNode.edges();
double var6 = var3;
for (int var8 = 0; var8 < var5.size(); var8++) {
GraphSpace.Edge var9 = var5.get(var8);
Vector3dc var10 = var9.otherNode(var1.graphNode).position();
this.rEdgeVector.set(var10).sub(var2);
double var11 = this.rLocalPosition.dot(this.rEdgeVector);
if (!(var11 <= 0.0)) {
double var13 = this.rEdgeVector.lengthSquared();
double var15;
if (var11 >= var13) {
var15 = var3 - 2.0 * var11 + var13;
} else {
var15 = var3 - var11 * var11 / var13;
}
if (var15 < var6) {
var6 = var15;
}
}
}
class="kw">return var6 <= 0.0 ? 0.0 : Math.sqrt(var6);
}
}