docs(render): Phase A8.F — sync plan Task 2 moverFlags to shipped 0x5c

The plan's Task 2 code block still showed moverFlags: ObjectInfoState.None; the
shipped code (fcea05f) and spec §5.1 use IsViewer|PathClipped|FreeRotate|
PerfectClip (retail init_object(player, 0x5c)). Update the stale snippet so the
plan matches reality (this stale block was the likely source of a re-report).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-29 21:42:03 +02:00
parent 7a244b3291
commit 05161399de

View file

@ -216,9 +216,14 @@ public sealed class PhysicsCameraCollisionProbe : ICameraCollisionProbe
stepDownHeight: 0f, // no step-down / ground snap
isOnGround: false, // no contact-plane / walkable semantics
body: null, // no cross-frame persistence
moverFlags: ObjectInfoState.None, // all targets collide; also keeps
// camera sweeps out of the #98
// IsPlayer capture filter
// Retail init_object(player, 0x5c) = IsViewer|PathClipped|FreeRotate|
// PerfectClip (pseudo-C :92864). PathClipped = hard-stop at first contact
// (the spring arm, not edge-slide); IsViewer = eye passes through creatures,
// colliding only with world geometry. NOT IsPlayer -> stays out of the #98
// capture filter. (Updated from ObjectInfoState.None during implementation
// per the Task-10 code-quality review; shipped in fcea05f / spec §5.1.)
moverFlags: ObjectInfoState.IsViewer | ObjectInfoState.PathClipped
| ObjectInfoState.FreeRotate | ObjectInfoState.PerfectClip,
movingEntityId: selfEntityId); // skip the player's own ShadowEntry
return FromSpherePath(r.Position, ViewerSphereRadius);