SteeringForcePursue class
Пакет: com.hypixel.hytale.server.npc.movement.steeringforces
Файл: com/hypixel/hytale/server/npc/movement/steeringforces/SteeringForcePursue.java
extends: SteeringForceWithTarget
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
private |
double |
stopDistance |
|
Vector3d |
var2 |
|
double |
var3 |
|
double |
var5 |
|
double |
var7 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
double |
getFalloffdouble getFalloff() |
public |
double |
getSlowdownDistancedouble getSlowdownDistance() |
public |
double |
getStopDistancedouble getStopDistance() |
|
|
if if(var3 <= this.squaredStopDistance) |
|
|
if if(var3 >= this.squaredSlowdownDistance) |
public |
void |
setDistancesvoid setDistances(double var1, double var3) |
public |
void |
setFalloffvoid setFalloff(double var1) |
public |
void |
setSlowdownDistancevoid setSlowdownDistance(double var1) |
public |
void |
setStopDistancevoid setStopDistance(double var1) |
abstract |
|
this this(20.0, 25.0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.movement.steeringforces;
class="kw">import com.hypixel.hytale.server.npc.movement.Steering;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class SteeringForcePursue class="kw">extends SteeringForceWithTarget {
class="kw">private double stopDistance;
class="kw">private double slowdownDistance;
class="kw">private double falloff = 3.0;
class="kw">private double invFalloff = 1.0 / this.falloff;
class="kw">private double squaredStopDistance;
class="kw">private double squaredSlowdownDistance;
class="kw">private double distanceDelta;
class="kw">public SteeringForcePursue() {
this(20.0, 25.0);
}
class="kw">public SteeringForcePursue(double var1, double var3) {
this.setDistances(var3, var1);
}
class="kw">public void setDistances(double var1, double var3) {
this.stopDistance = var3;
this.slowdownDistance = var1;
this.squaredStopDistance = var3 * var3;
this.squaredSlowdownDistance = var1 * var1;
this.distanceDelta = var1 - var3;
}
@Override
class="kw">public boolean compute(@Nonnull Steering var1) {
if (super.compute(var1)) {
var1.setTranslation(this.targetPosition);
Vector3d var2 = var1.getTranslation();
var2.sub(this.selfPosition);
double var3 = var2.lengthSquared();
if (var3 <= this.squaredStopDistance) {
var1.clear();
class="kw">return false;
} else {
double var5 = Math.sqrt(var3);
if (var3 >= this.squaredSlowdownDistance) {
var2.mul(1.0 / var5);
var1.clearRotation();
class="kw">return true;
} else {
double var7 = Math.pow((var5 - this.stopDistance) / this.distanceDelta, this.invFalloff);
var2.normalize(var7);
var1.clearRotation();
class="kw">return true;
}
}
} else {
class="kw">return false;
}
}
class="kw">public double getStopDistance() {
class="kw">return this.stopDistance;
}
class="kw">public void setStopDistance(double var1) {
this.setDistances(this.getSlowdownDistance(), var1);
}
class="kw">public double getSlowdownDistance() {
class="kw">return this.slowdownDistance;
}
class="kw">public void setSlowdownDistance(double var1) {
this.setDistances(var1, this.getStopDistance());
}
class="kw">public double getFalloff() {
class="kw">return this.falloff;
}
class="kw">public void setFalloff(double var1) {
this.falloff = var1;
this.invFalloff = 1.0 / var1;
}
}