AStarDebugBase class
Пакет: com.hypixel.hytale.server.npc.navigation
Файл: com/hypixel/hytale/server/npc/navigation/AStarDebugBase.java
Поля (62)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
char |
CENTER |
|
|
break |
|
AStarNode |
var1 |
|
|
var1 |
|
|
var1 |
|
int |
var10 |
|
|
var10 |
|
|
var10 |
|
|
var10 |
|
int |
var11 |
|
|
var11 |
|
int |
var12 |
|
|
var12 |
|
ObjectIterator |
var13 |
|
|
var13 |
|
AStarNode |
var14 |
|
int |
var15 |
|
int |
var16 |
|
boolean |
var17 |
|
String |
var18 |
|
String |
var19 |
|
int |
var2 |
|
StringBuilder[] |
var20 |
|
int |
var22 |
|
List |
var23 |
|
int |
var24 |
|
int |
var25 |
|
List |
var3 |
|
int |
var3 |
|
int |
var30 |
|
int |
var31 |
|
int |
var32 |
|
AStarNode |
var33 |
|
int |
var34 |
|
|
var34 |
|
|
var34 |
|
int |
var4 |
|
|
var4 |
|
List |
var4 |
|
long |
var4 |
|
AStarNode |
var5 |
|
|
var5 |
|
|
var5 |
|
int |
var6 |
|
boolean |
var6 |
|
|
var6 |
|
Long2ObjectMap |
var6 |
|
AStarNode |
var7 |
|
int |
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
int |
var7 |
|
int |
var8 |
|
|
var8 |
|
|
var8 |
|
|
var8 |
|
int |
var8 |
|
int |
var9 |
|
|
var9 |
|
|
var9 |
|
|
var9 |
Методы (27)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
protected |
void |
drawMapFinishvoid drawMapFinish(StringBuilder[] var1, int var2, int var3) |
public |
void |
dumpMapvoid dumpMap(boolean var1, MotionController var2) |
public |
void |
dumpMapvoid dumpMap(@Nullable AStarNode var1, boolean var2, MotionController var3) |
public |
void |
dumpOpensvoid dumpOpens(MotionController var1) |
public |
void |
dumpPathvoid dumpPath() |
|
|
for for(int var5 = 0; var5 < var2; var5++) |
|
|
for for(int var7 = 0; var7 < var2; var7++) |
|
|
for for(int var21 = 0; var21 < var30; var21 += 2) |
|
|
for for(StringBuilder var26 : var20) |
protected |
int |
getDumpMapRegionXint getDumpMapRegionX(int var1) |
protected |
int |
getDumpMapRegionZint getDumpMapRegionZ(int var1) |
|
|
if if(var6 > var4) |
|
|
if if(var1) |
|
|
if if(var7 != null) |
|
|
if if(var11 < var12) |
|
|
if if(var11 < var12) |
|
|
if if(var15 < var7) |
|
|
if if(var15 > var8) |
|
|
if if(var16 < var9) |
|
|
if if(var16 > var10) |
|
|
if if(var21 + 1 < var30) |
|
|
if if(var1 != null) |
|
|
if if(var25 > 51) |
protected |
void |
plotvoid plot(long var1, char var3, @Nonnull StringBuilder[] var4, int var5, int var6) |
|
|
while while(var1 != null) |
|
|
while while(var1 != null) |
|
|
while while(--var24 >= 0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.navigation;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap.Entry;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import java.util.List;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class AStarDebugBase {
class="kw">public class="kw">static class="kw">final char CENTER = ' ';
class="kw">public class="kw">static class="kw">final char CROSS = '\u253c';
class="kw">public class="kw">static class="kw">final char HLINE = '\u2500';
class="kw">public class="kw">static class="kw">final char VLINE = '\u2502';
class="kw">public class="kw">static class="kw">final char OPEN_NODE = '\u25c6';
class="kw">public class="kw">static class="kw">final char CLOSED_NODE = '\u25c7';
class="kw">public class="kw">static class="kw">final char CLOSED_PATH_NODE = '\u25ef';
class="kw">public class="kw">static class="kw">final char OPEN_PATH_NODE = '\u25c9';
class="kw">public class="kw">static class="kw">final char BLOCKED_NODE = '\u00d7';
class="kw">public class="kw">static class="kw">final char START_POSITION = '@';
class="kw">public class="kw">static class="kw">final char END_POSITION = '\u03a9';
class="kw">public class="kw">static class="kw">final String BORDER_PATTERN = "\u2500\u253c".repeat(1025);
class="kw">public class="kw">static class="kw">final String CENTER_PATTERN = " \u2502".repeat(1025);
class="kw">protected AStarBase aStarBase;
class="kw">protected HytaleLogger logger;
class="kw">protected HytaleLogger.Api loggerInfo;
class="kw">public AStarDebugBase(AStarBase var1, @Nonnull HytaleLogger var2) {
this.aStarBase = var1;
this.logger = var2;
this.loggerInfo = var2.at(Level.INFO);
}
class="kw">public void dumpOpens(MotionController var1) {
int var2 = this.aStarBase.getOpenCount();
List var3 = this.aStarBase.getOpenNodes();
int var4 = -1;
for (int var5 = 0; var5 < var2; var5++) {
int var6 = var3.get(var5).getLength();
if (var6 > var4) {
var4 = var6;
}
}
this.loggerInfo
.log(
"== A* iter=%s opens=%s total=%s maxLength=%s %s",
this.aStarBase.getIterations(),
var2,
this.aStarBase.getVisitedBlocks().size(),
var4,
this.getExtraLogString(var1)
);
for (int var7 = 0; var7 < var2; var7++) {
this.loggerInfo.log("%2d %s", var7, var3.get(var7).toString());
}
}
class="kw">public void dumpPath() {
AStarNode var1 = this.aStarBase.getPath();
this.loggerInfo
.log("== A* Path iter=%s opens=%s total=%s", this.aStarBase.getIterations(), this.aStarBase.getOpenCount(), this.aStarBase.getVisitedBlocks().size());
while (var1 != null) {
this.loggerInfo.log("%s", var1.toString());
var1 = var1.getNextPathNode();
}
}
class="kw">public void dumpMap(boolean var1, MotionController var2) {
int var3 = this.aStarBase.getOpenCount();
List var4 = this.aStarBase.getOpenNodes();
AStarNode var5 = null;
boolean var6 = false;
if (var1) {
AStarNode var7 = this.aStarBase.getPath();
if (var7 != null) {
var5 = var7;
var6 = true;
} else if (var3 > 0) {
var5 = var4.get(var3 - 1);
}
}
this.dumpMap(var5, var6, var2);
}
class="kw">public void dumpMap(@Nullable AStarNode var1, boolean var2, MotionController var3) {
long var4 = this.aStarBase.getStartPositionIndex();
Long2ObjectMap var6 = this.aStarBase.getVisitedBlocks();
int var11 = AStarBase.xFromIndex(var4);
int var12 = this.getDumpMapRegionX(var11);
int var7;
int var8;
if (var11 < var12) {
var7 = var11;
var8 = var12;
} else {
var7 = var12;
var8 = var11;
}
var11 = AStarBase.zFromIndex(var4);
var12 = this.getDumpMapRegionZ(var11);
int var9;
int var10;
if (var11 < var12) {
var9 = var11;
var10 = var12;
} else {
var9 = var12;
var10 = var11;
}
ObjectIterator var13 = Long2ObjectMaps.fastIterator(var6);
while (var13.hasNext()) {
AStarNode var14 = (AStarNode)((Entry)var13.next()).getValue();
int var15 = AStarBase.xFromIndex(var14.getPositionIndex());
int var16 = AStarBase.zFromIndex(var14.getPositionIndex());
if (var15 < var7) {
var7 = var15;
}
if (var15 > var8) {
var8 = var15;
}
if (var16 < var9) {
var9 = var16;
}
if (var16 > var10) {
var10 = var16;
}
}
int var30 = var10 - var9 + 1;
int var31 = var8 - var7 + 1;
int var32 = var7 & 1;
boolean var17 = (var9 & 1) == 0;
String var18 = "'" + (var17 ? CENTER_PATTERN : BORDER_PATTERN).substring(var32, var32 + var31) + "'";
String var19 = "'" + (var17 ? BORDER_PATTERN : CENTER_PATTERN).substring(var32, var32 + var31) + "'";
StringBuilder[] var20 = new StringBuilder[var30];
for (int var21 = 0; var21 < var30; var21 += 2) {
var20[var21] = new StringBuilder(var18);
if (var21 + 1 < var30) {
var20[var21 + 1] = new StringBuilder(var19);
}
}
var13 = Long2ObjectMaps.fastIterator(var6);
while (var13.hasNext()) {
AStarNode var33 = (AStarNode)((Entry)var13.next()).getValue();
this.plot(var33.getPositionIndex(), (char)(var33.isInvalid() ? '\u00d7' : (var33.isOpen() ? '\u25c6' : '\u25c7')), var20, var7, var9);
}
int var22 = this.aStarBase.getOpenCount();
int var34;
if (var1 != null) {
var34 = var1.getLength();
while (var1 != null) {
this.plot(var1.getPositionIndex(), (char)(var1.isOpen() ? '\u25c9' : '\u25ef'), var20, var7, var9);
var1 = var2 ? var1.getNextPathNode() : var1.getPredecessor();
}
} else {
List var23 = this.aStarBase.getOpenNodes();
int var24 = var22;
var34 = 0;
while (--var24 >= 0) {
int var25 = var22 - var24;
if (var25 > 51) {
break;
}
this.plot(var23.get(var24).getPositionIndex(), (char)(var25 >= 26 ? var25 - 26 + 97 : var25 + 65), var20, var7, var9);
}
}
this.plot(var4, '@', var20, var7, var9);
this.drawMapFinish(var20, var7, var9);
this.loggerInfo
.log("== A* iter=%s, opens=%s total=%s maxLength=%s %s", this.aStarBase.getIterations(), var22, var6.size(), var34, this.getExtraLogString(var3));
for (StringBuilder var26 : var20) {
this.loggerInfo.log("%s", var26.toString());
}
}
class="kw">protected void plot(long var1, char var3, @Nonnull StringBuilder[] var4, int var5, int var6) {
int var7 = AStarBase.zFromIndex(var1) - var6;
int var8 = AStarBase.xFromIndex(var1) - var5 + 1;
var4[var7].setCharAt(var8, var3);
}
class="kw">protected void drawMapFinish(StringBuilder[] var1, int var2, int var3) {
}
class="kw">protected int getDumpMapRegionZ(int var1) {
class="kw">return var1;
}
class="kw">protected int getDumpMapRegionX(int var1) {
class="kw">return var1;
}
@Nonnull
class="kw">protected String getExtraLogString(MotionController var1) {
class="kw">return "";
}
}