User visually confirmed floors render in Holtburg Inn after the WB TryGet<Setup> guard. Probe re-capture: 0 [wb-error] lines (was 385), 0 NULL_RESULT (was 55), Holtburg 123/123 cells complete (was 97/123). Documents the nine pre-existing indoor bugs the user observed during verification (see-through floor, indoor collision, stairs, walls, clicking, indoor lighting artifacts, stabs-don't-react-to-atmospheric- lighting, slope terrain lighting). All pre-existing; filed for follow-up phases via docs/ISSUES.md. Phase 2 complete. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.9 KiB
Indoor Cell Rendering — Phase 2 Verification
Date: 2026-05-19 Outcome: ✅ Floor renders in Holtburg Inn. User visually confirmed. Predecessor: Phase 2 cause report.
Probe re-capture
After applying the one-line WB fix at ObjectMeshManager.cs:1230:
| Metric | Pre-fix | Post-fix |
|---|---|---|
[wb-error] lines |
385 | 0 |
[indoor-upload] NULL_RESULT |
55 | 0 |
[indoor-upload] FAILED |
0 | 0 |
Total [indoor-upload] requested |
— | 1157 |
Total [indoor-upload] completed |
— | 1157 |
Holtburg (0xA9B4) requested |
123 | 123 |
Holtburg (0xA9B4) completed |
97 | 123 |
Holtburg (0xA9B4) missing |
26 | 0 |
100% success rate on EnvCell uploads. Zero swallowed exceptions. Zero null returns.
Visual confirmation
User walked into Holtburg Inn (and other nearby buildings whose cells were previously failing) and confirmed:
"Yes floors are rendering now inside houses."
The previously-failing cells (0xA9B40100, 0xA9B40111, 0xA9B40112, 0xA9B40117, 0xA9B4011B, etc.) now upload successfully, the dispatcher finds their render data, and the floor / wall / ceiling geometry renders.
Regressions checked
- Outdoor terrain still renders correctly. ✓
- Outdoor scenery (trees, rocks, stabs) still render. ✓
- NPCs, mobs, world entities still render. ✓
- Build clean, no new warnings. ✓
- No new test failures. ✓
Other observations during the walk
The user reported other indoor-related bugs that are now observable because the floor is rendering. These are all pre-existing (not caused by this Phase 2 fix) but were hidden by the missing-floor bug. They are filed as separate issues for follow-up phases:
- See-through floor — other buildings visible "below" / "through" the rendered floor (depth/stab-culling).
- Spot lights on walls indoors (point-light positioning).
- Camera on 2nd floor goes very dark (per-cell ambient or trigger).
- Static building stabs don't react to atmospheric lighting changes (shader path).
- Some slope terrain lit incorrectly (terrain normal calculation).
- Collision "blocked by air" indoors (cell BSP misalignment).
- Walking up stairs broken (stair-step physics on EnvCell geometry).
- Pass through walls from outside→in (one-sided wall collision).
- Click selection penetrates walls (WorldPicker raycast not testing cell BSP).
These nine items are tracked in docs/ISSUES.md with proposed phase groupings. None block Phase 2 closure.
Conclusion
Phase 2 of the indoor cell rendering fix is complete. The single-root-cause exception was identified via the diagnostic chain shipped in Phase 1 + Phase 2, and resolved with a one-line guard at the WB call site that prevented blind TryGet<Setup> deserialization of GfxObj-typed stab ids.
Total runtime for Phase 2: ~4 client launches.