From e9c1a83c51070c4f8da76540c17c2393922b6fcc Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 18 Jul 2026 17:39:52 +0400 Subject: fix(terrain): preserve opaque shade lookup keys --- crates/fparkan-terrain-format/src/lib.rs | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'crates/fparkan-terrain-format') diff --git a/crates/fparkan-terrain-format/src/lib.rs b/crates/fparkan-terrain-format/src/lib.rs index 764de09..54bd3f4 100644 --- a/crates/fparkan-terrain-format/src/lib.rs +++ b/crates/fparkan-terrain-format/src/lib.rs @@ -212,18 +212,15 @@ pub struct TerrainMaterialPair { } impl TerrainMaterialPair { - /// Returns the material-manager selection used by `GetShade`. + /// Returns the opaque lookup key supplied to `GetShade`. /// - /// `GetShade` owns a manager loaded only with `Shade.wea`, so its - /// 16-bit lookup occupies row bits of that manager's table zero. It is - /// deliberately separate from the `Land1.wea`/`Land2.wea` selections - /// carried by [`TerrainMaterialLayers`]. + /// This is deliberately separate from the `Land1.wea`/`Land2.wea` + /// selectors carried by [`TerrainMaterialLayers`]. Although `GetShade` + /// owns a manager loaded from `Shade.wea`, this key is not a WEAR row: + /// observed map values exceed that table's row count. #[must_use] - pub const fn shade_selection(self) -> TerrainMaterialSelection { - TerrainMaterialSelection { - table_index: 0, - material_index: self.material_lookup, - } + pub const fn shade_lookup_key(self) -> u16 { + self.material_lookup } } @@ -1586,11 +1583,8 @@ mod tests { ]) ); assert_eq!( - document.slot_material_pairs(0).expect("material pairs")[0].shade_selection(), - TerrainMaterialSelection { - table_index: 0, - material_index: 0x0102, - } + document.slot_material_pairs(0).expect("material pairs")[0].shade_lookup_key(), + 0x0102 ); assert_eq!(document.slot_material_pairs(1), None); -- cgit v1.2.3