diff --git a/docs/ISSUES.md b/docs/ISSUES.md index a7da1c46..64e04419 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -74,14 +74,20 @@ above the jam (more 38.7° treads → a flat porch at Z 63.6) — so it is ONE l not a general stair failure. Classic **#137 / building-collision-mesh junction-anomaly family** (TS-4 sliding-normal-provenance), stair edition. -**Open question (decides mesh-artifact vs faithful):** is that 52° face **real dat geometry** -of object `0xf6822103` or a **mesh-generation artifact** at a BSP-leaf / sub-object junction -on our side? The capture only records treads the player STOOD on, so it can't show the jam -face's own extent or the tread directly above it. Decisive next read: dump `0xf6822103`'s -collision faces (`ACDREAM_DUMP_GFXOBJS`, or resolve its GfxObj/Setup and decode the BSP) and -check for a spurious ~52° face where a 38.7° continuation should be. If the step to the next -tread is ≤ 0.6 m (the step-up budget; it looks ~0.4 m), step-up SHOULD lift the player → bug -in step-up-vs-wall classification for a just-over-walkable face. +**RESOLVED (artifact, not geometry) — `ACDREAM_PROBE_BUILDING=1` hit-poly capture:** at the +jam, ALL 156 building collisions are ONE polygon — a real, walkable **38.7° tread quad** +(`gfxObj=0x01000AC5`, `obj=0xF6822103`, `partIdx=3`, local plane `(-0.625,0,0.781)`; world +verts X 131.25–132.75, Y 77.00–77.50, Z 60.62–61.01). **There is NO riser / wall polygon in +the collision mesh at all.** The 52° "wall" normal from the resolve capture (`(0,0.78,0.62)`) +is that tread normal **rotated exactly 90°** (perpendicular; dot ≈ 0) — it does not exist in +the dat. So the block is a **synthetic sliding normal fabricated by our collision RESPONSE**, +not real geometry and not a step-height/budget issue: the foot sphere straddles a convex tread +edge (near a building-part seam — `partIdx=3`, neighbouring `gfxObj=0x01000ACA` present), hits +the lower tread poly, and the slide/validate chain invents a perpendicular normal, flattens it +to horizontal `(0,1,0)`, and slides the player sideways. **Confirmed #137 / TS-4 +sliding-normal-provenance family** (phantom wall at a convex edge/seam), stair edition. Fix +lives in that family (where the perpendicular normal is fabricated / how a convex walkable +tread edge is handled) — touches the frozen collision internals → brainstorm gate first. **Files:** `src/AcDream.Core/Physics/TransitionTypes.cs` (step-up / slide classification, the sliding-normal horizontalisation); building-collision mesh generation (BSP faces for