SWMRNibbleArray

基本信息

com.mitchej123.supernova.light.SWMRNibbleArray —— 光照半字节存储,命名致敬 SWMR(Single Writer Multiple Reader)区域存档方案。

关键常量

常量 值 说明
ARRAY_SIZE 16 * 16 * 16 / 2 = 2048 每 section 半字节数组长度
VISIBLE_ABSENT 0 不存在
VISIBLE_ZERO 1 全零(无光)
VISIBLE_FULL 2 全满
VISIBLE_DATA 3 有实际数据

ARRAY_SIZE 的注释写 // 2048 bytes —— 16*16*16 = 4096,/2 是因为每字节存两个 4-bit 半字节。 注释值与表达式一致,不是笔误。

可见性标记的用途

前 4 个字节是状态标记而非光照值: 读到 ABSENT 可跳过整个 section(不分配), FULL / ZERO 可走快速路径而不用逐格计算 —— 这是渲染与重算的主要加速点。

与原版的桥接

方法 行 说明
static fromVanilla(NibbleArray) 42 从原版 NibbleArray 转换
无参构造 SWMRNibbleArray() 71 新建

使用者

Supernova Engine 的 getNibblesOnChunk / setNibbles 抽象方法即操作此类。

相关条目

源码

  • src/main/java/com/mitchej123/supernova/light/SWMRNibbleArray.java