feat(render): Phase A8 — LoadedCell.PortalPolygons field

First slice of the indoor-cell visibility culling pipeline (#78). Adds
PortalPolygons: List<Vector3[]> to LoadedCell, parallel-indexed to the
existing Portals + ClipPlanes lists. Empty arrays for portals whose
polygon could not be resolved. Field is populated in Task 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-26 07:39:31 +02:00
parent 4cbfbf98af
commit fee878f292

View file

@ -56,6 +56,20 @@ public sealed class LoadedCell
/// Derived from portal polygon geometry during cell preparation.
/// </summary>
public List<PortalClipPlane> ClipPlanes = new();
/// <summary>
/// Portal polygon vertices in cell-local space, one Vector3[] per
/// <see cref="CellPortalInfo"/> entry in <see cref="Portals"/>. Index i
/// in this list corresponds to index i in <see cref="Portals"/> and
/// <see cref="ClipPlanes"/>. An empty array means the portal's polygon
/// could not be resolved at load time (degenerate cell or missing
/// polygon entry).
/// <para>
/// Used by the Phase A8 indoor-cell stencil pipeline to build a
/// per-frame triangle-fan mesh for portal silhouette masking.
/// </para>
/// </summary>
public List<Vector3[]> PortalPolygons = new();
}
/// <summary>