Chunk Tasks
基本信息
com.mitchej123.supernova.light.ChunkTasks —— 单个区块待处理光照任务的数据包。
字段(全部 public final)
| 字段 | 行 | 类型 | 说明 |
|---|---|---|---|
chunkCoordinate |
13 | long |
区块坐标(打包成一个 long) |
changedPositions |
14 | IntOpenHashSet |
变化过的方块位置 |
changedSectionSet |
17 | Boolean[] |
哪些 section 有变化 |
initialLightChunk |
19 | Chunk |
待做初始光照的区块 |
initialLightEmptySections |
20 | Boolean[] |
初始光照的空 section |
queuedEdgeChecks |
23 | IntOpenHashSet |
已排队的边缘检查 |
lightGeneration |
26 | long |
光照代数(版本号) |
三个 Set/Array 的分工
| 成员 | 粒度 | 用途 |
|---|---|---|
changedPositions |
方块 | 精确到坐标的变更点 |
changedSectionSet |
section(16³) | 粗粒度跳过的判断依据 |
queuedEdgeChecks |
边界对 | 区块边界的光照检查去重 |
IntOpenHashSet(Trove)用于去重, 属「必须用集合运算而非计数」的场景 —— 同一位置被多次标记时不能重复处理。
lightGeneration
单调递增的代数标记,配合 World Light Manager 的 Lane 丢弃过期代的任务。
相关条目
源码
src/main/java/com/mitchej123/supernova/light/ChunkTasks.java