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