docs: file #175 — door collision uses placement pose, not the closed pose (dat-confirmed)

User report at the Facility Hub double door (Setup 0x02000C9D): embed
into the visual panel from one side, phantom wall on the other. Dat
inspection (Issue175HubDoorPoseInspectionTests, kept as the evidence
fixture) confirms the mechanism: the Setup's Default PLACEMENT frames
pose the two panels AJAR (yaw -150/-30, origin (+-0.88, -0.44, 1.37))
while the rendered door poses them CLOSED from the wire-supplied
motion table via the sequencer. ShadowShapeBuilder reads placement
frames, so the 1.66x0.29x2.95 m physics slabs register at the ajar
pose — displaced behind the visual door. Retail tests each part's
LIVE pose (closed == motion-table default; the open swing is ETHEREAL,
#150). Fix shape filed: BSP shadow shapes for sequencer-bearing
entities must use the sequencer's part transforms, placement frames
only as the no-animation fallback. Holtburg's single door never
surfaced this because its placement pose ~= closed pose.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-05 16:52:43 +02:00
parent b54555da62
commit 2312259a93
2 changed files with 199 additions and 0 deletions

View file

@ -46,6 +46,57 @@ Copy this block when adding a new issue:
---
## #175 — Door collision registers the Setup PLACEMENT pose, not the motion-table CLOSED pose (phantom slab behind the visual door)
**Status:** OPEN — mechanism dat-confirmed (`Issue175HubDoorPoseInspectionTests`); fix not started
**Severity:** MEDIUM-HIGH (embed into doors from one side; phantom wall on the other — can push the player out of use radius)
**Filed:** 2026-07-05
**Component:** physics — server-entity collision registration (door part poses)
**Description (user, Facility Hub door guid 0x78A020C7 / Setup 0x02000C9D):**
running at the door embeds the player INTO the visual panel (deep enough to
camera-clip to the other side); the actual blocking plane sits displaced to
the FAR side, and approaching from that side there's a phantom wall in front
of the visual door — far enough that the door can be out of use range.
**Mechanism (dat-confirmed, 2026-07-05):** the hub door is a DOUBLE door —
Setup 0x02000C9D has 3 parts; panels part[0]/part[1] (GfxObj 0x01002936,
physics slab 1.66×0.29×2.95 m) pose in the Setup's `Default` PLACEMENT
frames at yaw **150° / 30°** with origin **(±0.88, 0.44, 1.37)** — an
AJAR pose displaced 0.44 m behind the doorway plane. The RENDERED door poses
its panels from the motion table's default (closed) state via the sequencer
(the setup itself has no DefaultMotionTable; the wire spawn supplies it).
Collision registers via `ShadowShapeBuilder.FromSetup`, which reads the
PLACEMENT frames (`Resting|Default|first`) — so the physical slabs sit at
the ajar placement pose while the visuals show closed panels: the exact
offset the user walked into. Retail tests each part's LIVE pose
(`CPhysicsPart` — see the #150 notes: for a CLOSED door the live pose IS
the motion-table closed pose; the open swing never matters because ETHEREAL
bypasses collision entirely).
**Fix shape (retail-faithful, next session):** the BSP shadow shapes for
server entities with a sequencer must use the SEQUENCER's part transforms
(the motion-table default/closed pose) instead of the raw placement frames —
either sample at registration (the sequencer exists by then — verify spawn
wiring order) or re-register via `ShadowObjectRegistry.UpdatePosition`-style
refresh after the sequencer's first advance. Parts without animation data
keep the placement-frame fallback. Watch: entScale composition, multi-part
dedup ([[feedback_dedup_keys_after_cardinality_change]]), and the Holtburg
single-door apparatus must stay green (its placement pose ≈ closed pose,
which is why #99/#150 never surfaced this).
**Files:** `src/AcDream.Core/Physics/ShadowShapeBuilder.cs` (placement-frame
read), `src/AcDream.App/Rendering/GameWindow.cs`
(`RegisterServerEntityCollision` ~4130), inspection
`tests/AcDream.Core.Tests/Physics/Issue175HubDoorPoseInspectionTests.cs`.
**Acceptance:** at the Facility Hub double door: closed door blocks AT the
visual panels (no embed, no phantom wall on either side); open door fully
passable; use radius reachable from both sides. Holtburg cottage door
unregressed (door apparatus green).
---
## #174 — Door Use dies after the first jump: the RemoveLinkAnimations seam stripped animations without retail's queue drain
**Status:** 🟡 FIX SHIPPED 2026-07-05 (same session) — pending user gate (jump around, then use the Facility Hub door from close AND from ~3 m).