fix(render): Phase A8.F — camera sweep uses retail moverFlags 0x5c (PathClipped hard-stop)

Code review found the probe passed ObjectInfoState.None; retail's
SmartBox::update_viewer calls init_object(player, 0x5c) =
IsViewer|PathClipped|FreeRotate|PerfectClip (pseudo-C :92864). PathClipped makes
the sweep hard-stop at first contact (TransitionTypes.cs:811) instead of
edge-sliding around corners (which would re-trigger the A8.F camera-cell
instability); IsViewer lets the eye pass through creatures, colliding only with
world geometry. Resolves the spec's slide-vs-stop open question. Also reset
CollideCamera in the Defaults_AreRetailValues baseline test (review: maintenance
trap). Spec §5.1/§11.1 synced.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-29 19:11:53 +02:00
parent 376e2c3578
commit fcea05f808
3 changed files with 27 additions and 11 deletions

View file

@ -21,6 +21,7 @@ public class CameraDiagnosticsTests
CameraDiagnostics.CameraAdjustmentSpeed = 40.0f;
CameraDiagnostics.AlignToSlope = true;
CameraDiagnostics.UseRetailChaseCamera = true;
CameraDiagnostics.CollideCamera = true;
Assert.Equal(0.45f, CameraDiagnostics.TranslationStiffness);
Assert.Equal(0.45f, CameraDiagnostics.RotationStiffness);
@ -31,6 +32,7 @@ public class CameraDiagnosticsTests
// legacy camera remains opt-in via the DebugPanel toggle until
// the follow-up deletion commit.
Assert.True(CameraDiagnostics.UseRetailChaseCamera);
Assert.True(CameraDiagnostics.CollideCamera);
}
[Fact]