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