AStarNode class

Пакет: com.hypixel.hytale.server.npc.navigation

Файл: com/hypixel/hytale/server/npc/navigation/AStarNode.java

implements: IWaypoint

Поля (6)

МодификаторыТипИмя
return this.length < 0
final AStarNode ENTRY_NODE_TAG
AStarNode var2
var2
AStarNode var5
float var6

Методы (17)

МодификаторыВозвратСигнатура
public void adjustOptimalPathvoid adjustOptimalPath(AStarNode var1, float var2, int var3)
public void closevoid close()
for for(int var4 = 0; var4 < this.successors.length; var4++)
public float getEstimateToGoalfloat getEstimateToGoal()
public AStarNode getNextPathNodeAStarNode getNextPathNode()
public long getPositionIndexlong getPositionIndex()
public int getPredecessorDirectionint getPredecessorDirection()
public AStarNode getSuccessorAStarNode getSuccessor(int var1)
public float getTotalCostfloat getTotalCost()
public float getTravelCostfloat getTravelCost()
if if(var6 < 0.0F)
public boolean isInvalidboolean isInvalid()
public boolean isOpenboolean isOpen()
public AStarNode nextAStarNode next()
public void setNextNodevoid setNextNode(AStarNode var1, int var2)
public void setSuccessorvoid setSuccessor(int var1, @Nonnull AStarNode var2, int var3, float var4)
while while(var1-- > 0 && var2 != null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.navigation;

class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class AStarNode class="kw">implements IWaypoint {
   class="kw">public class="kw">static class="kw">final AStarNode ENTRY_NODE_TAG = new AStarNode(0);
   @Nonnull
   class="kw">protected class="kw">final Vector3d position = new Vector3d();
   class="kw">protected float travelCost;
   class="kw">protected float estimateToGoal;
   class="kw">protected float totalCost;
   @Nullable
   class="kw">protected AStarNode predecessor = null;
   class="kw">protected int predecessorDirection = -1;
   @Nonnull
   class="kw">protected class="kw">final AStarNode[] successors;
   @Nonnull
   class="kw">protected class="kw">final float[] stepCost;
   class="kw">protected AStarNode nextPathNode;
   class="kw">protected int length;
   class="kw">protected long positionIndex;
   class="kw">protected boolean open;

   class="kw">public AStarNode(int var1) {
      this.successors = new AStarNode[var1];
      this.stepCost = new float[var1];
   }

   class="kw">public long getPositionIndex() {
      class="kw">return this.positionIndex;
   }

   @Nonnull
   class="kw">public AStarNode[] getSuccessors() {
      class="kw">return this.successors;
   }

   class="kw">public AStarNode getSuccessor(int var1) {
      class="kw">return this.successors[var1];
   }

   class="kw">public void setSuccessor(int var1, @Nonnull AStarNode var2, int var3, float var4) {
      this.successors[var1] = var2;
      this.stepCost[var1] = var4;
      var2.successors[var3] = ENTRY_NODE_TAG;
   }

   @Nullable
   class="kw">public AStarNode getPredecessor() {
      class="kw">return this.predecessor;
   }

   class="kw">public AStarNode getNextPathNode() {
      class="kw">return this.nextPathNode;
   }

   class="kw">public void setNextNode(AStarNode var1, int var2) {
      this.nextPathNode = var1;
      this.length = var2;
   }

   class="kw">public float getTravelCost() {
      class="kw">return this.travelCost;
   }

   class="kw">public float getEstimateToGoal() {
      class="kw">return this.estimateToGoal;
   }

   class="kw">public float getTotalCost() {
      class="kw">return this.totalCost;
   }

   class="kw">public int getPredecessorDirection() {
      class="kw">return this.predecessorDirection;
   }

   class="kw">public void close() {
      this.open = false;
   }

   class="kw">public boolean isOpen() {
      class="kw">return this.open;
   }

   class="kw">public boolean isInvalid() {
      class="kw">return this.length < 0;
   }

   @Override
   class="kw">public int getLength() {
      class="kw">return this.length;
   }

   class="kw">public AStarNode next() {
      class="kw">return this.nextPathNode;
   }

   @Nonnull
   @Override
   class="kw">public Vector3d getPosition() {
      class="kw">return this.position;
   }

   @Nullable
   class="kw">public AStarNode advance(int var1) {
      AStarNode var2 = this;

      while (var1-- > 0 && var2 != null) {
         var2 = var2.nextPathNode;
      }

      class="kw">return var2;
   }

   @Nonnull
   class="kw">public AStarNode initAsStartNode(@Nonnull Vector3d var1, long var2, float var4, float var5) {
      this.position.set(var1);
      this.positionIndex = var2;
      this.open = true;
      this.estimateToGoal = var5;
      this.travelCost = var4;
      this.totalCost = this.travelCost + this.estimateToGoal;
      this.predecessor = null;
      this.predecessorDirection = -1;
      Arrays.fill(this.successors, null);
      Arrays.fill(this.stepCost, 0.0F);
      this.length = 1;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public AStarNode initWithPredecessor(@Nonnull AStarNode var1, int var2, @Nonnull Vector3d var3, long var4, int var6, float var7, float var8) {
      this.position.set(var3);
      this.positionIndex = var4;
      this.open = true;
      this.estimateToGoal = var8;
      this.travelCost = var7;
      this.totalCost = this.travelCost + this.estimateToGoal;
      this.length = var1.length + 1;
      Arrays.fill(this.successors, null);
      Arrays.fill(this.stepCost, 0.0F);
      var1.setSuccessor(var2, this, var6, var7 - var1.travelCost);
      this.predecessor = var1;
      this.predecessorDirection = var2;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public AStarNode initAsInvalid(@Nonnull Vector3d var1, long var2) {
      this.position.set(var1);
      this.positionIndex = var2;
      this.open = false;
      this.estimateToGoal = Float.MAX_VALUE;
      this.travelCost = Float.MAX_VALUE;
      this.totalCost = Float.MAX_VALUE;
      this.predecessor = null;
      this.predecessorDirection = -1;
      Arrays.fill(this.successors, null);
      Arrays.fill(this.stepCost, 0.0F);
      this.length = -1;
      class="kw">return this;
   }

   class="kw">public void adjustOptimalPath(AStarNode var1, float var2, int var3) {
      this.predecessor = var1;
      this.predecessorDirection = var3;
      this.travelCost += var2;
      this.totalCost = this.travelCost + this.estimateToGoal;
      this.length = this.predecessor.length + 1;

      for (int var4 = 0; var4 < this.successors.length; var4++) {
         AStarNode var5 = this.successors[var4];
         if (var5 != null && !ENTRY_NODE_TAG.equals(var5)) {
            float var6 = this.travelCost + this.stepCost[var4] - var5.travelCost;
            if (var6 < 0.0F) {
               var5.adjustOptimalPath(this, var6, var4);
            }
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "AStarNode{position="
         + this.position
         + ", travelCost="
         + this.travelCost
         + ", estimateToGoal="
         + this.estimateToGoal
         + ", totalCost="
         + this.totalCost
         + ", predecessorDirection="
         + this.predecessorDirection
         + ", stepCost="
         + Arrays.toString(this.stepCost)
         + ", length="
         + this.length
         + ", positionIndex="
         + this.positionIndex
         + ", open="
         + this.open
         + "}";
   }
}