fix #137 (window climb): the player's collision capsule topped out at 1.2m — head sphere 0.63m too low
The 'run into the last corridor window and pop up through its roof' report: the live callers passed sphereHeight: 1.2f into SpherePath.InitPath, whose head-sphere formula (height - radius) put the head sphere center at 0.72 - the capsule top at 1.2m. The top 0.63m of a 1.83m character had NO collision, so at the corridor-end window alcove (0x8A020179 -> 0x8A02017E: 0.70m sill face, 1.3m opening, sloped funnel behind) the step-up's placement never saw the head overlapping the lintel solids and let the player climb in head-through-roof. Dat truth (HumanSetup_CollisionSpheres_DatTruth): Setup 0x02000001 spheres = (0,0,0.475) r=0.48 and (0,0,1.350) r=0.48 - capsule top 1.83 = Setup.Height 1.835. Retail collides with that sphere list verbatim (CPhysicsObj::transition 0x00512dc0 -> init_sphere(GetNumSphere, GetSphere, m_scale)). Fix: PlayerMovementController + the GameWindow remote resolve now pass sphereHeight: 1.835f (capsule top; head center 1.355 vs dat 1.350). InitPath unchanged - captured-input replay fixtures (recorded 1.2 inputs) stay byte-identical. Register TS-46: the (radius, capsule-top) scalar approximation of the Setup sphere list (5mm foot/head offsets; remotes use human dims) with the retire path (plumb the sphere list). Pins: WindowOpening_HeadCannotFit_EntryBlocked (22-frame walked approach wall-slides at the sill, never enters 0x8A02017E) + WindowAlcove_RaisedPlacement_HeadInLintelSolid_Collides (Path-1 placement rejects the raised head in the lintel solids) + the WindowShaft_FullPolyDump / HumanSetup dat inspections. Suites: Core 2562 / App 713 / UI 425 / Net 385, 0 failures. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
1494f10cb5
commit
aa96d7ad77
6 changed files with 285 additions and 13 deletions
|
|
@ -1245,15 +1245,26 @@ matching the door's open/closed state.)
|
|||
**✅ CORRIDOR GATE PASSED 2026-07-06 evening (user: "not collision anymore.
|
||||
Good.")** — the corridor phantom arc (mechanisms 1–3) is user-verified
|
||||
FIXED. REMAINING #137 scope from the same gate session:
|
||||
- **Window/opening climb (NEW repro, this is #137's "openings in walls"
|
||||
half):** running into the last corridor window, the player STEPS UP into
|
||||
the opening — head (and camera) pop through the opening's roof. Retail
|
||||
blocks this. Log anchor (`launch-137-gate2.log`): transit
|
||||
`0x8A020179 → 0x8A02017E at (90.209,-41.774,-5.209)` and back — the
|
||||
south-wall opening at y≈−41.7, sill ≈0.8 m (world z −5.2) — climbed
|
||||
despite stepUpHeight 0.6. Investigate the step-up acceptance (sill
|
||||
height vs budget; suspect the step-up's walkable probe accepting the
|
||||
sill top or the opening's floor from the neighbor cell).
|
||||
- **Window/opening climb FIXED same day (pending gate): the player's
|
||||
collision capsule TOPPED OUT AT 1.2 m.** The callers passed
|
||||
`sphereHeight: 1.2f` and `InitPath` places the head sphere center at
|
||||
`height − radius` = 0.72 — the top 0.63 m of a 1.83 m character had NO
|
||||
collision. The dat human Setup 0x02000001 (dumped in
|
||||
`HumanSetup_CollisionSpheres_DatTruth`): spheres `(0,0,0.475) r=0.48` +
|
||||
`(0,0,1.350) r=0.48` (top 1.83 = Setup.Height 1.835); retail collides
|
||||
with that list verbatim (`CPhysicsObj::transition` 0x00512dc0 →
|
||||
`init_sphere(GetNumSphere, GetSphere, scale)`). At the corridor-end
|
||||
window alcove (0x8A020179 → 0x8A02017E: sill face 0.70 m, opening 1.3 m
|
||||
tall, sloped funnel behind — full-vertex dump in
|
||||
`WindowShaft_FullPolyDump`), the missing head let the step-up's
|
||||
placement pass and the player climbed in head-through-lintel. Fix: both
|
||||
live callers now pass 1.835 (capsule top; head center 1.355 ≈ dat
|
||||
1.350); register TS-46 documents the residual 5 mm scalar
|
||||
approximation. Pins: `WindowOpening_HeadCannotFit_EntryBlocked` (walked
|
||||
approach wall-slides and never enters 0x8A02017E) +
|
||||
`WindowAlcove_RaisedPlacement_HeadInLintelSolid_Collides` (the raised
|
||||
placement rejects on the head-vs-lintel). Captured-input replay
|
||||
fixtures keep their recorded 1.2 inputs — InitPath unchanged.
|
||||
- Doors half (block/pass per open state) — unchanged.
|
||||
Two RENDER issues also observed at the gate (filed separately below as
|
||||
#176/#177): the purple floor flashing at seams is angle/camera-dependent
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue