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