TargetContactSamplePlanner class
Пакет: com.hypixel.hytale.server.npc.movement.controllers
Файл: com/hypixel/hytale/server/npc/movement/controllers/TargetContactSamplePlanner.java
Поля (29)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
MAX_SAMPLES |
|
public double |
end |
|
public final TargetContactSamplePlanner.RunBounds |
runBounds |
|
public final ProbeMoveData.SegmentLocation |
segmentLocation |
|
public double |
start |
|
double |
var11 |
|
|
var11 |
|
double |
var12 |
|
int |
var13 |
|
double |
var14 |
|
|
var14 |
|
int |
var14 |
|
double |
var16 |
|
|
var16 |
|
double |
var18 |
|
double |
var19 |
|
double |
var21 |
|
double |
var23 |
|
double |
var25 |
|
int |
var27 |
|
|
var27 |
|
|
var27 |
|
|
var27 |
|
int |
var4 |
|
ProbeMoveData.Segment[] |
var5 |
|
ProbeMoveData.Segment |
var6 |
|
double |
var7 |
|
double |
var9 |
|
|
var9 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("sample buffers must have at least MAX_SAMPLES entries") |
|
public |
RunBoundspublic RunBounds() |
|
public |
Scratchpublic Scratch() |
static |
int |
addFallbackSampleint addFallbackSample(double var0, double var2, double var4, double var6, int var8, @Nonnull double[] var9, @Nonnull RailPathSmoother.HitSide[] var10) |
abstract |
return |
addFallbackSamplereturn addFallbackSample(var16 + var7, var12, var5, var1, var27, var10, var11) |
static |
boolean |
computeTargetRunBoundsboolean computeTargetRunBounds(@Nonnull ProbeMoveData var0, double var1, @Nonnull TargetContactSamplePlanner.Scratch var3) |
|
|
if if(var10.length < 6 || var11.length < 6) |
|
|
if if(var14 > var16) |
|
|
if if(var19 <= var21) |
|
|
if if(var23 <= var25) |
|
|
if if(var4 >= 0 && var4 < var0.segmentCount) |
|
|
if if(var6 == null) |
static |
boolean |
isSameRunYboolean isSameRunY(@Nullable ProbeMoveData.Segment var0, double var1) |
static |
int |
planSamplesint planSamples(@Nonnull ProbeMoveData var0,
double var1,
double var3,
double var5,
double var7,
@Nonnull TargetContactSamplePlanner.Scratch var9,
@Nonnull double[] var10,
@Nonnull RailPathSmoother.HitSide[] var11) |
static |
double |
segmentStartDistancedouble segmentStartDistance(@Nonnull ProbeMoveData var0, int var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.movement.controllers;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">final class TargetContactSamplePlanner {
class="kw">public class="kw">static class="kw">final int MAX_SAMPLES = 6;
class="kw">private TargetContactSamplePlanner() {
}
class="kw">public class="kw">static int planSamples(
@Nonnull ProbeMoveData var0,
double var1,
double var3,
double var5,
double var7,
@Nonnull TargetContactSamplePlanner.Scratch var9,
@Nonnull double[] var10,
@Nonnull RailPathSmoother.HitSide[] var11
) {
if (var10.length < 6 || var11.length < 6) {
throw new IllegalArgumentException("sample buffers must have at least MAX_SAMPLES entries");
}
if (!computeTargetRunBounds(var0, var1, var9)) {
class="kw">return 0;
}
double var12 = 0.0;
double var14 = MathUtil.clamp(var9.runBounds.start, var12, var5);
double var16 = MathUtil.clamp(var9.runBounds.end, var12, var5);
if (var14 > var16) {
double var18 = var14;
var14 = var16;
var16 = var18;
}
int var27 = 0;
double var19 = var14 + var7;
double var21 = Math.min(var16 - var7, var1 - var7);
if (var19 <= var21) {
var10[var27] = MathUtil.clamp(var1 - var3 + 1.0E-6, var19, var21);
var11[var27] = RailPathSmoother.HitSide.BEFORE_TARGET;
var27++;
}
double var23 = Math.max(var14 + var7, var1 + var7);
double var25 = var16 - var7;
if (var23 <= var25) {
var10[var27] = MathUtil.clamp(var1 + var3 - 1.0E-6, var23, var25);
var11[var27] = RailPathSmoother.HitSide.AFTER_TARGET;
var27++;
}
var27 = addFallbackSample(var14 + var7, var12, var5, var1, var27, var10, var11);
var27 = addFallbackSample(var16 - var7, var12, var5, var1, var27, var10, var11);
var27 = addFallbackSample(var14 - var7, var12, var5, var1, var27, var10, var11);
class="kw">return addFallbackSample(var16 + var7, var12, var5, var1, var27, var10, var11);
}
class="kw">private class="kw">static int addFallbackSample(
double var0, double var2, double var4, double var6, int var8, @Nonnull double[] var9, @Nonnull RailPathSmoother.HitSide[] var10
) {
if (Double.isFinite(var0) && !(var0 < var2 - 1.0E-6) && !(var0 > var4 + 1.0E-6)) {
var9[var8] = var0;
var10[var8] = var0 <= var6 ? RailPathSmoother.HitSide.BEFORE_TARGET : RailPathSmoother.HitSide.AFTER_TARGET;
class="kw">return var8 + 1;
} else {
class="kw">return var8;
}
}
class="kw">private class="kw">static boolean computeTargetRunBounds(@Nonnull ProbeMoveData var0, double var1, @Nonnull TargetContactSamplePlanner.Scratch var3) {
if (!Double.isFinite(var1) || var0.segments == null || var0.segmentCount <= 0) {
class="kw">return false;
}
if (!var0.locateSegmentAtDistance(var1, var3.segmentLocation)) {
class="kw">return false;
}
int var4 = var3.segmentLocation.segmentIndex;
if (var4 >= 0 && var4 < var0.segmentCount) {
ProbeMoveData.Segment[] var5 = var0.segments;
ProbeMoveData.Segment var6 = var5[var4];
if (var6 == null) {
class="kw">return false;
}
double var7 = var6.position.y;
double var9 = segmentStartDistance(var0, var4);
double var11 = var5[var4].distance;
int var13 = var4;
while (var13 > 0 && isSameRunY(var5[var13 - 1], var7)) {
var9 = segmentStartDistance(var0, --var13);
}
int var14 = var4;
while (var14 + 1 < var0.segmentCount && isSameRunY(var5[var14 + 1], var7)) {
var11 = var5[++var14].distance;
}
var3.runBounds.start = var9;
var3.runBounds.end = var11;
class="kw">return true;
} else {
class="kw">return false;
}
}
class="kw">private class="kw">static double segmentStartDistance(@Nonnull ProbeMoveData var0, int var1) {
class="kw">return var1 > 0 && var0.segments != null ? var0.segments[var1 - 1].distance : 0.0;
}
class="kw">private class="kw">static boolean isSameRunY(@Nullable ProbeMoveData.Segment var0, double var1) {
class="kw">return var0 != null && Math.abs(var0.position.y - var1) <= 1.0E-6;
}
class="kw">public class="kw">static class="kw">final class RunBounds {
class="kw">public double start;
class="kw">public double end;
class="kw">public RunBounds() {
}
}
class="kw">public class="kw">static class="kw">final class Scratch {
class="kw">public class="kw">final ProbeMoveData.SegmentLocation segmentLocation = new ProbeMoveData.SegmentLocation();
class="kw">public class="kw">final TargetContactSamplePlanner.RunBounds runBounds = new TargetContactSamplePlanner.RunBounds();
class="kw">public Scratch() {
}
}
}