PathGridCache(appeng.me.cache.PathGridCache)
基本信息
| 属性 | 值 |
|---|---|
| 源码 | appeng/me/cache/PathGridCache.java |
| 类声明行号 | 47 |
| 实现接口 | appeng.api.networking.IPathingGrid |
| 注册 | core/Registration.java:546(键 IPathingGrid.class) |
| 构造器 | :65 |
职责
控制器路由状态的持有者。它保存「当前控制器在哪、启动到什么阶段、
各节点要多少通道」,并提供 repath() 作为全网重算的入口。
关键方法
| 方法 | 行号 | 说明 |
|---|---|---|
onUpdateTick() |
70 | 推进启动进度 / 通道传播 |
repath() |
352 | 全网重算路径 |
isNetworkBooting() |
342 | 启动中 |
getControllerState() |
347 | 返回 api/networking/pathing/ControllerState |
updateNodReq(MENetworkChannelChanged) |
323 | 某节点通道需求变了 |
getControllerAnimation() |
203 | 供渲染(core/settings/ControllerAnimation) |
cycleControllerAnimation(boolean) |
207 | 手动切换动画 |
setControllerAnimation(ControllerAnimation) |
212 | 写入 |
repath() 是建边 / 拆边的唯一后果
me/GridConnection.java:254-261:
final IPathingGrid p = this.sideA.getInternalGrid().getCache(IPathingGrid.class);
if (AEConfig.instance.debugPathFinding) { ... }
p.repath();
AEConfig.instance.debugPathFinding 打开时会打坐标 + AELog.printStackTrace(Level.INFO)。
注意 repath() 在 mergeGrids 之后、addConnection 之前调用
(GridConnection.java:251 vs :263-264)。
生命周期
| 钩子 | 行号 | 有实现 |
|---|---|---|
onUpdateTick |
70 | ✅ |
addNode |
150 | ✅ |
removeNode |
125 | ✅ |
onSplit |
179 | ✅ |
onJoin |
186 | ✅ |
populateGridStorage |
195 | ✅ |
路径是必须持久化的:拆档后要恢复到原有路由,否则通道会全部重算。
与方块控制器的双向关系
PathGridCache 存控制器坐标,TileController 读它渲染。渲染动画枚举定义在
appeng/core/settings/ControllerAnimation.java(不在本分片范围)。
控制器方块条目:方块控制器。