fix #175: door BSP collision poses at the motion-table closed pose
The Facility Hub double door (Setup 0x02000C9D) embeds the player into the visual panel from one side and blocks with a phantom slab on the other: its Setup PLACEMENT frames pose the two panels AJAR (yaw -150/-30 deg, 0.44 m behind the doorway plane — dat-confirmed by the Issue175 inspection) while the rendered door poses them CLOSED from the wire-supplied motion table via the sequencer. ShadowShapeBuilder read placement frames, so the 1.66x0.29x2.95 m physics slabs registered at the ajar pose. Retail tests each part's LIVE CPhysicsPart pose — for an idle door, the motion table's default (closed) state. Fix: ShadowShapeBuilder.FromSetup gains partPoseOverride (BSP part shapes only); RegisterServerEntityCollision derives it from the spawn MotionTableId via GameWindow.MotionTableDefaultPose (default style -> first cycle -> LowFrame part frames). Null/short poses fall back per-part to placement frames — table-less entities and landblock statics unchanged. One-shot snapshot vs retail's per-frame live pose is register row AP-84 (equivalent for the door lifecycle: closed == default pose; open == ETHEREAL bypasses collision, #150). Pins: FromSetup_PartPoseOverride_ReplacesPlacementFrames / _NoOverride_KeepsPlacementFrames / _ShortOverride_FallsBackPerPart. Suites: Core 2539 / App 713 / UI 425 / Net 385 green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2312259a93
commit
355e389d4c
5 changed files with 160 additions and 6 deletions
|
|
@ -48,7 +48,16 @@ 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
|
||||
**Status:** 🟡 FIX SHIPPED 2026-07-05 (same session) — pending user gate (Facility Hub double door: closed blocks AT the visual panels from both sides, no embed, no phantom wall; Holtburg cottage door unregressed).
|
||||
**FIX:** `ShadowShapeBuilder.FromSetup` gains a `partPoseOverride` (BSP part
|
||||
shapes only; CylSphere/Sphere unchanged); `RegisterServerEntityCollision`
|
||||
derives it via `GameWindow.MotionTableDefaultPose` — the wire MotionTableId's
|
||||
default style, first cycle, LowFrame part frames (the closed/idle pose retail's
|
||||
live CPhysicsPart holds). Null / short poses fall back per-part to placement
|
||||
frames (table-less entities + landblock statics unchanged). Register row
|
||||
AP-84 (one-shot registration snapshot vs retail's per-frame live pose —
|
||||
equivalent for the door lifecycle since open = ETHEREAL). Pins: the three
|
||||
`FromSetup_*` tests in `Issue175HubDoorPoseInspectionTests`.
|
||||
**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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue