SearchCone class

Пакет: com.hypixel.hytale.builtin.portals.utils.posqueries.generators

Файл: com/hypixel/hytale/builtin/portals/utils/posqueries/generators/SearchCone.java

implements: SpatialQuery

Поля (7)

МодификаторыТипИмя
final Vector3d direction
String var4
ThreadLocalRandom var4
double var5
double var6
double var7
Vector3d var9

Методы (2)

МодификаторыВозвратСигнатура
if if(var3 != null)
abstract this this(var1, var2, var2, var4, var6)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.portals.utils.posqueries.generators;

class="kw">import com.hypixel.hytale.builtin.portals.utils.posqueries.SpatialQuery;
class="kw">import com.hypixel.hytale.builtin.portals.utils.posqueries.SpatialQueryDebug;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import java.util.concurrent.ThreadLocalRandom;
class="kw">import java.util.stream.Stream;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class SearchCone class="kw">implements SpatialQuery {
   class="kw">private class="kw">final Vector3d direction;
   class="kw">private class="kw">final double minRadius;
   class="kw">private class="kw">final double maxRadius;
   class="kw">private class="kw">final double maxDegrees;
   class="kw">private class="kw">final int attempts;

   class="kw">public SearchCone(Vector3d var1, double var2, double var4, int var6) {
      this(var1, var2, var2, var4, var6);
   }

   class="kw">public SearchCone(Vector3d var1, double var2, double var4, double var6, int var8) {
      this.direction = var1;
      this.minRadius = var2;
      this.maxRadius = var4;
      this.maxDegrees = var6;
      this.attempts = var8;
   }

   @Nonnull
   @Override
   class="kw">public Stream<Vector3d> createCandidates(@Nonnull World var1, @Nonnull Vector3d var2, @Nullable SpatialQueryDebug var3) {
      if (var3 != null) {
         String var4 = this.minRadius == this.maxRadius
            ? String.format("%.1f", this.minRadius)
            : String.format("%.1f", this.minRadius) + "-" + String.format("%.1f", this.maxRadius);
         var3.appendLine(
            "Searching in a "
               + var4
               + " radius cone (max "
               + String.format("%.1f", this.maxDegrees)
               + "\u00b0) in direction "
               + SpatialQueryDebug.fmt(this.direction)
               + " from "
               + SpatialQueryDebug.fmt(var2)
               + ":"
         );
      }

      double var6 = Math.toRadians(this.maxDegrees);
      class="kw">return Stream.<Vector3d>generate(() -> {
         ThreadLocalRandom var4 = ThreadLocalRandom.current();
         double var5 = this.minRadius + var4.nextDouble() * (this.maxRadius - this.minRadius);
         double var7 = (var4.nextDouble() - 0.5) * var6;
         Vector3d var9 = new Vector3d(this.direction).rotateY((float)var7).normalize(var5);
         class="kw">return var9.add(var2);
      }).limit(this.attempts);
   }
}