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