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