From 05161399deccc725a923c9e41281005f10a885f9 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 29 May 2026 21:42:03 +0200 Subject: [PATCH] =?UTF-8?q?docs(render):=20Phase=20A8.F=20=E2=80=94=20sync?= =?UTF-8?q?=20plan=20Task=202=20moverFlags=20to=20shipped=200x5c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../plans/2026-05-29-a8f-camera-collision.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/superpowers/plans/2026-05-29-a8f-camera-collision.md b/docs/superpowers/plans/2026-05-29-a8f-camera-collision.md index 110fa4e..29ebd50 100644 --- a/docs/superpowers/plans/2026-05-29-a8f-camera-collision.md +++ b/docs/superpowers/plans/2026-05-29-a8f-camera-collision.md @@ -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);