using System.Numerics; namespace AcDream.App.Rendering; /// /// Factory for the OUTDOOR render root — the cell the render roots at when the camera eye is outdoors. /// Retail roots every in-world frame at viewer_cell (SmartBox::RenderNormalMode → /// DrawInside(viewer_cell), decomp:92635); when outdoors that is a CLandCell. acdream models it /// as a portal-less carrying only (so /// seeds OutsideView FULL-SCREEN → terrain/sky/scenery draw /// as the root's shell) and . /// /// R-A2 (2026-06-08): the node no longer carries reverse portals into nearby buildings. Retail /// does NOT flood buildings from the land root — buildings flood SEPARATELY, per-building, during the /// landscape draw (terrain BSP → DrawPortal → ConstructView(CBldPortal), decomp:326881/433895/433827). /// acdream issues those via per nearby /// building inside . The pre-R-A2 design flooded all /// buildings from one root through reverse portals, coupling their interior membership to a single /// root-level portal-side test that oscillated as the chase eye grazed a doorway — the indoor flap. /// public static class OutdoorCellNode { public static LoadedCell Build(uint outdoorCellId) => new LoadedCell { CellId = outdoorCellId, SeenOutside = true, IsOutdoorNode = true, WorldTransform = Matrix4x4.Identity, InverseWorldTransform = Matrix4x4.Identity, }; }