SteeringForceEvade class
Пакет: com.hypixel.hytale.server.npc.movement.steeringforces
Файл: com/hypixel/hytale/server/npc/movement/steeringforces/SteeringForceEvade.java
extends: SteeringForceWithTarget
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
private |
double |
slowdownDistance |
|
double |
var2 |
|
double |
var4 |
Методы (13)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
double |
getFalloffdouble getFalloff() |
public |
double |
getSlowdownDistancedouble getSlowdownDistance() |
public |
double |
getStopDistancedouble getStopDistance() |
|
|
if if(var2 >= this.squaredStopDistance) |
|
|
if if(var2 < 1.0E-6) |
|
|
if if(this.adhereToDirectionHint) |
public |
void |
setAdhereToDirectionHintvoid setAdhereToDirectionHint(boolean var1) |
public |
void |
setDirectionHintvoid setDirectionHint(float var1) |
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.core.modules.physics.util.PhysicsMath;
class="kw">import com.hypixel.hytale.server.npc.movement.Steering;
class="kw">import javax.annotation.Nonnull;
class="kw">public class SteeringForceEvade class="kw">extends SteeringForceWithTarget {
class="kw">private double slowdownDistance;
class="kw">private double stopDistance;
class="kw">private double falloff = 3.0;
class="kw">private double squaredSlowdownDistance;
class="kw">private double squaredStopDistance;
class="kw">private double distanceDelta;
class="kw">private float directionHint;
class="kw">private boolean adhereToDirectionHint;
class="kw">public SteeringForceEvade() {
this(20.0, 25.0);
}
class="kw">public SteeringForceEvade(double var1, double var3) {
this.setDistances(var1, var3);
}
class="kw">public void setDistances(double var1, double var3) {
this.slowdownDistance = var1;
this.stopDistance = var3;
this.squaredSlowdownDistance = var1 * var1;
this.squaredStopDistance = var3 * var3;
this.distanceDelta = var3 - var1;
}
class="kw">public void setDirectionHint(float var1) {
this.directionHint = var1;
}
class="kw">public void setAdhereToDirectionHint(boolean var1) {
this.adhereToDirectionHint = var1;
}
@Override
class="kw">public boolean compute(@Nonnull Steering var1) {
if (super.compute(var1)) {
var1.setTranslation(this.selfPosition).getTranslation().sub(this.targetPosition);
double var2 = var1.getTranslation().lengthSquared();
if (var2 >= this.squaredStopDistance) {
var1.clear();
class="kw">return false;
}
var1.clearRotation();
if (var2 < 1.0E-6) {
var1.setTranslation(PhysicsMath.headingX(this.directionHint), 0.0, PhysicsMath.headingZ(this.directionHint));
class="kw">return true;
}
if (this.adhereToDirectionHint) {
var1.setTranslation(PhysicsMath.headingX(this.directionHint), 0.0, PhysicsMath.headingZ(this.directionHint));
}
if (!(var2 < this.squaredSlowdownDistance) && this.distanceDelta != 0.0) {
double var4 = Math.pow((this.stopDistance - Math.sqrt(var2)) / this.distanceDelta, 1.0 / this.falloff);
var1.getTranslation().normalize(var4);
class="kw">return true;
} else {
var1.getTranslation().normalize();
class="kw">return true;
}
} else {
class="kw">return false;
}
}
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 getStopDistance() {
class="kw">return this.stopDistance;
}
class="kw">public void setStopDistance(double var1) {
this.setDistances(this.getSlowdownDistance(), var1);
this.stopDistance = var1;
}
class="kw">public double getFalloff() {
class="kw">return this.falloff;
}
class="kw">public void setFalloff(double var1) {
this.falloff = var1;
}
}