SearchCircular class

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

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

implements: SpatialQuery

Поля (5)

МодификаторыТипИмя
final double minRadius
ThreadLocalRandom var2
double var3
String var4
double var5

Методы (2)

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

Исходный код

Показать/скрыть
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 SearchCircular class="kw">implements SpatialQuery {
   class="kw">private class="kw">final double minRadius;
   class="kw">private class="kw">final double maxRadius;
   class="kw">private class="kw">final int attempts;

   class="kw">public SearchCircular(double var1, int var3) {
      this(var1, var1, var3);
   }

   class="kw">public SearchCircular(double var1, double var3, int var5) {
      this.minRadius = var1;
      this.maxRadius = var3;
      this.attempts = var5;
   }

   @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 circle around " + SpatialQueryDebug.fmt(var2) + ":");
      }

      class="kw">return Stream.<Vector3d>generate(() -> {
         ThreadLocalRandom var2 = ThreadLocalRandom.current();
         double var3 = var2.nextDouble() * Math.PI * 2.0;
         double var5 = this.minRadius + var2.nextDouble() * (this.maxRadius - this.minRadius);
         class="kw">return new Vector3d(var2).add(Math.cos(var3) * var5, 0.0, Math.sin(var3) * var5);
      }).limit(this.attempts);
   }
}