diff --git a/src/AcDream.App/Composition/FrameRootComposition.cs b/src/AcDream.App/Composition/FrameRootComposition.cs index dc94659c..c92d5320 100644 --- a/src/AcDream.App/Composition/FrameRootComposition.cs +++ b/src/AcDream.App/Composition/FrameRootComposition.cs @@ -512,7 +512,12 @@ internal sealed class FrameRootCompositionPhase new WorldScenePViewRenderer( new RetailPViewRenderer( currentRenderSceneOracle, - renderFrameProduct), + renderFrameProduct, + // Campaign FW3.2b-2: the walk's production world + // data, published/retired with each landblock by the + // render publisher (FW3.1). + live.LandblockPipeline.RenderPublisher?.WalkBuildings, + live.LandblockPipeline.RenderPublisher?.WalkLandscape), retailPViewPassExecutor, retailPViewPassExecutor), retailPViewCells, diff --git a/src/AcDream.App/Rendering/RetailPViewRenderer.cs b/src/AcDream.App/Rendering/RetailPViewRenderer.cs index f1c71440..dadbdc9c 100644 --- a/src/AcDream.App/Rendering/RetailPViewRenderer.cs +++ b/src/AcDream.App/Rendering/RetailPViewRenderer.cs @@ -93,10 +93,21 @@ public sealed class RetailPViewRenderer { } + // Campaign FW3.2b-2: the walk's production world-data registries + // (published/retired by LandblockRenderPublisher) plus the per-frame + // driver state. Null until the composition passes them; the static + // cutover requires both. + private readonly Walk.WalkBuildingRegistry? _walkBuildings; + private readonly Walk.WalkLandscapeAssembler? _walkLandscape; + internal RetailPViewRenderer( InteriorEntityPartition.IObserver? partitionObserver, - RenderScenePViewFrameProductController? sceneFrameProduct = null) + RenderScenePViewFrameProductController? sceneFrameProduct = null, + Walk.WalkBuildingRegistry? walkBuildings = null, + Walk.WalkLandscapeAssembler? walkLandscape = null) { + _walkBuildings = walkBuildings; + _walkLandscape = walkLandscape; _partitionObserver = partitionObserver; _candidateObserver = partitionObserver as ICurrentRenderPViewObserver; _sceneFrameProduct = sceneFrameProduct; diff --git a/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs b/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs index ab09145f..b0e13f41 100644 --- a/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs +++ b/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs @@ -76,6 +76,11 @@ public sealed class LandblockPresentationPipeline private readonly Action? _publishBeforeSpatialCommit; private readonly LandblockRenderPublisher? _renderPublisher; + + /// Campaign FW3.2b-2: the render publisher, exposed so the + /// frame composition can hand its walk world-data registries + /// (WalkBuildings/WalkLandscape) to the PView renderer. + internal LandblockRenderPublisher? RenderPublisher => _renderPublisher; private readonly LandblockPhysicsPublisher? _physicsPublisher; private readonly LandblockStaticPresentationPublisher? _staticPublisher; private readonly GpuWorldState _state;