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