test(render) FW3 gate: the fallback camera test pins the corrected retail cell

The total-fallback assertion pinned ViewerCellId == 0 - the pre-fix
adaptation. Retail set_viewer copies the whole player Position,
objcell_id included, so the fallback inherits the player cell; the
re-extend-from-the-player property the test exists for is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-30 17:46:17 +02:00
parent f3cb4b6cc9
commit 8f8b0b9c57

View file

@ -876,9 +876,15 @@ public class RetailChaseCameraTests
isOnGround: true, contactPlaneNormal: Vector3.UnitZ, dt: 1f / 60f, isOnGround: true, contactPlaneNormal: Vector3.UnitZ, dt: 1f / 60f,
cellId: 0x100, selfEntityId: 0x5); cellId: 0x100, selfEntityId: 0x5);
Step(); // frame 1: total fallback — viewer snaps to the player, cell 0 Step(); // frame 1: total fallback — viewer snaps to the player
Assert.Equal(Vector3.Zero, cam.Position); Assert.Equal(Vector3.Zero, cam.Position);
Assert.Equal(0u, cam.ViewerCellId); // FW3 visual-gate correction: retail's set_viewer(&player->
// m_position, 1) copies the WHOLE Position — objcell_id included
// — so the fallback viewer inherits the PLAYER'S cell (0x100
// here), never 0. Rooting those frames on 0 made the walk treat
// a doorway-graze frame as outdoor (grass over the stairwell —
// the #119 family's transition arm).
Assert.Equal(0x100u, cam.ViewerCellId);
Step(); // frame 2: the sweep target re-extends FROM the player Step(); // frame 2: the sweep target re-extends FROM the player
float reach = Vector3.Distance(probe.Requests[1], Vector3.Zero); float reach = Vector3.Distance(probe.Requests[1], Vector3.Zero);