docs(phase): Indoor walking Phase 2 — Portal-based cell tracking shipped
Closes ISSUES.md #87 + #85 + the remaining wall-pass-through portion of #84 (fully closes #84). Portal-graph cell traversal replaces Phase D's AABB containment. Walking through doors promotes/demotes CellId correctly via portal traversal; walls block from inside indoor cells; indoor walkable plane is synthesized from the cell's floor poly so the resolver tracks walkability correctly during indoor movement. Files two new issues: #88 (indoor static objects vibrate — pre-existing, spotted during Phase 2 testing) and #89 (BSPQuery.SphereIntersectsCellBsp — follow-up to make CheckBuildingTransit retail-faithful; currently uses radius-less PointInsideCellBsp as a documented approximation). ISSUES.md: #87, #85, #84 moved to DONE. #88 + #89 filed. Roadmap: Indoor walking Phase 2 added to shipped table. CLAUDE.md: recent-phase paragraph updated to reflect Phase 2 shipped. New handoff: docs/research/2026-05-19-indoor-walking-phase2-shipped-handoff.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
eb0f772f0f
commit
a9c74d153a
4 changed files with 391 additions and 88 deletions
49
CLAUDE.md
49
CLAUDE.md
|
|
@ -776,35 +776,32 @@ acdream's plan lives in two files committed to the repo:
|
|||
acceptance criteria. Do not drift from the spec without explicit user
|
||||
approval.
|
||||
|
||||
**Indoor walking Phase 1 — BSP cluster (Cluster A) partially shipped
|
||||
2026-05-19.** Seven commits across five phases:
|
||||
- `18a2e28` — implementation plan
|
||||
- `27d7de1` — Phase A: `[indoor-bsp]` probe + `ProbeIndoorBspEnabled` toggle
|
||||
- `3764867` — Phase B: `CellBspRayOccluder` in `WorldPicker.Pick` (**closes #86**)
|
||||
- `4e308d5` — Phase B follow-up: screen-rect cell-occlusion tests
|
||||
- `c19d6fb` — Phase D: AABB containment for indoor CellId promotion + L.2e bare-low-byte fix (partial #84 fix)
|
||||
- `fda6af7` — Phase E first commit: `[cell-cache]` probe
|
||||
- `1f11ba9` — Phase E second commit: extended `[cell-cache]` with AABB + bsphere + poly counts
|
||||
**Indoor walking Phase 2 — Portal-based cell tracking shipped
|
||||
2026-05-19.** Six commits:
|
||||
- `1969c55` — CellBSP + Portals wired into CellPhysics (`PortalInfo` struct, `VisibleCellIds`)
|
||||
- `aad6976` — `CellTransit.FindCellList` + `FindTransitCellsSphere` + `AddAllOutsideCells`; `ResolveCellId` rename
|
||||
- `069534a` — `BuildingPhysics` + `CheckBuildingTransit` for outdoor→indoor entry via `BldPortalInfo`
|
||||
- `702b30a` — code-review polish (DRY cell-id derivation, `PortalFlags.ExactMatch` enum, docs)
|
||||
- `3ffe1e4` — critical fix: pass foot-sphere center (`GlobalSphere[0].Origin`) not `CheckPos` to `ResolveCellId`
|
||||
- `eb0f772` — `TryFindIndoorWalkablePlane` synthesizes indoor walkable plane from cell floor poly
|
||||
|
||||
**#86** (click selection penetrates walls) — **CLOSED.** `WorldPicker.Pick`
|
||||
consults `CellBspRayOccluder.NearestWallT`; entities behind walls are filtered.
|
||||
**#84** (blocked by air indoors) — **PARTIAL.** The "spawn-in-building stuck
|
||||
above floor" variant is resolved (Phase D promotes CellId to the indoor cell
|
||||
on spawn-in). The remaining "walls don't block from inside during normal
|
||||
walking" symptom is the same root cause as #85 — AABB containment is too
|
||||
tight for threshold/doorway cells (Z range ~0.2 m, player stands at ~0.46 m)
|
||||
to keep CellId promoted. Both are tracked under new issue **#87**.
|
||||
**#85** (pass through walls outside→in) — **OPEN.** Root cause confirmed as
|
||||
same as #84 remaining symptom — CellId drifts back to outdoor cell, indoor
|
||||
BSP never fires. See #87.
|
||||
**#87** (indoor portal-based cell tracking) — **FILED.** Retail-faithful fix
|
||||
via `CObjMaint::HandleObjectEnterCell` + `CEnvCell` portal connectivity.
|
||||
Diagnostic infrastructure from Cluster A (`[indoor-bsp]` + `[cell-cache]`
|
||||
probes, both runtime-toggleable) stays in place as scaffolding for the
|
||||
follow-up phase. Handoff: [`docs/research/2026-05-19-cluster-a-shipped-handoff.md`](docs/research/2026-05-19-cluster-a-shipped-handoff.md).
|
||||
**#86** (click selection penetrates walls) — **CLOSED** (Phase 1 Cluster A).
|
||||
**#84** (blocked by air indoors) — **FULLY CLOSED.** Spawn-in-building variant
|
||||
closed by Phase 1 (Phase D AABB containment). Wall-block-from-inside variant
|
||||
closed by Phase 2 (portal-graph traversal).
|
||||
**#85** (pass through walls outside→in) — **CLOSED** by Phase 2.
|
||||
`CheckBuildingTransit` promotes CellId via the building-shell portal graph
|
||||
on outdoor→indoor entry; indoor-BSP collision fires from both sides.
|
||||
**#87** (indoor portal-based cell tracking) — **CLOSED** by Phase 2.
|
||||
**#88** (indoor static objects vibrate) — **FILED** (pre-existing, Medium).
|
||||
**#89** (port `BSPQuery.SphereIntersectsCellBsp`) — **FILED** (Low, documented
|
||||
approximation in `CheckBuildingTransit`).
|
||||
Diagnostic infrastructure: `[indoor-bsp]`, `[cell-cache]`, `[cell-transit]`,
|
||||
`[check-bldg]` probes all stay in place.
|
||||
Handoff: [`docs/research/2026-05-19-indoor-walking-phase2-shipped-handoff.md`](docs/research/2026-05-19-indoor-walking-phase2-shipped-handoff.md).
|
||||
Phase 1 handoff: [`docs/research/2026-05-19-cluster-a-shipped-handoff.md`](docs/research/2026-05-19-cluster-a-shipped-handoff.md).
|
||||
|
||||
**Next phase is Claude's choice** per work-order autonomy. Candidates:
|
||||
indoor portal-based cell tracking (#87, completes the indoor walking story);
|
||||
M2 critical path (F.2 / F.3 / F.5a / L.1c / L.1b — kill-a-drudge demo);
|
||||
or the pre-existing "next phase candidates" list below.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue