AngleEdgeSelector class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.graph.edgeselectors
Файл: com/hypixel/hytale/builtin/hytalegenerator/graph/edgeselectors/AngleEdgeSelector.java
extends: EdgeSelector
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
var3 |
|
|
var3 |
|
RangeDouble |
var6 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(int var5 = 0; var5 < this.delimiters.size() |
|
|
if if(var3 > 90.0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.graph.edgeselectors;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.delimiters.RangeDouble;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.GraphSpace;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.vectorproviders.VectorProvider;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class AngleEdgeSelector class="kw">extends EdgeSelector {
@Nonnull
class="kw">private class="kw">final VectorProvider vectorProvider;
@Nonnull
class="kw">private class="kw">final List<RangeDouble> delimiters;
@Nonnull
class="kw">private class="kw">final Vector3d rEdgeVector;
@Nonnull
class="kw">private class="kw">final Vector3d rEdgeMiddlePosition;
@Nonnull
class="kw">private class="kw">final Vector3d rReferenceVector;
@Nonnull
class="kw">private class="kw">final VectorProvider.Context rVectorContext;
class="kw">public AngleEdgeSelector(@Nonnull VectorProvider var1, @Nonnull List<RangeDouble> var2) {
this.vectorProvider = var1;
this.delimiters = new ArrayList<>(var2);
this.rEdgeVector = new Vector3d();
this.rEdgeMiddlePosition = new Vector3d();
this.rReferenceVector = new Vector3d();
this.rVectorContext = new VectorProvider.Context();
}
@Override
class="kw">public boolean isSelected(@Nonnull GraphSpace var1, @Nonnull GraphSpace.Edge var2) {
this.rEdgeVector.set(var2.nodeA().position());
this.rEdgeVector.sub(var2.nodeB().position());
if (VectorUtil.isZero(this.rEdgeVector)) {
class="kw">return false;
}
this.rEdgeMiddlePosition.set(var2.nodeA().position());
this.rEdgeMiddlePosition.add(var2.nodeB().position());
this.rEdgeMiddlePosition.mul(0.5);
this.rVectorContext.assign(this.rEdgeMiddlePosition, null, null);
this.vectorProvider.process(this.rVectorContext, this.rReferenceVector);
double var3 = Math.toDegrees(this.rReferenceVector.angle(this.rEdgeVector));
if (var3 > 90.0) {
var3 = 180.0 - var3;
}
for (int var5 = 0; var5 < this.delimiters.size(); var5++) {
RangeDouble var6 = this.delimiters.get(var5);
if (var6.contains(var3)) {
class="kw">return true;
}
}
class="kw">return false;
}
@Override
class="kw">public double getInteractionRange(double var1) {
class="kw">return var1;
}
}