public interface IWaterSceneWhat a viewport needs to turn a scene's water components into a surface it can draw.
Remarks
IVegetationScene's sibling, one subsystem over, and it exists for exactly the reason that one does. The water mode's draw gesture writes a real .vxspline and creates a WaterBodyComponent naming it, and the viewport drew nothing at all — so laying a lake was an act of faith. This is the seam: the module answers the three questions a fold cannot answer for itself, and the presenter draws what it is handed.
⚠ Three questions and not a surface, because the fold is not duplicated. WaterZoneSystem.Fold is what turns a world's zones and bodies into fields, and the editor runs that very object over the scene document's world rather than a second implementation of it — [35 § D2](../../docs/plan/35-water.md#d2-one-evaluator-two-hosts-and-the-seam-is-a-test)'s rule applied to the authoring host. What the fold cannot supply is what a name means, and that is the editor's project database speaking.
⚠ Kernel types only, on IVegetationScene's terms. This assembly references Vixen.Water — arithmetic, no device — and never Vixen.Rendering.Water, whose IWaterSplineSource and IWaterWaveSource these two methods are adapted onto by the presenter's assembly. The split is the same one the terrain seam makes.
Methods (3)
Spline? SplineFor(string name, in Matrix4x4 placement)The curve a body names, or if nothing can supply it.
WaterWaveSpectrum? SpectrumFor(string name)The sea state a zone names, or if nothing can supply it.
float GroundAt(Vector2 ground)How high the ground is under a place, in world units.
Used by (8)
- EditorApplicationVixen.Editor.App
- GroundAdapterVixen.Editor.App
- ScenePresenterVixen.Editor.App
- SplineAdapterVixen.Editor.App
- WaterModuleVixen.Editor.Water
- WaterPresenterVixen.Editor.App
- WaterSceneSourceVixen.Editor.Water
- WaveAdapterVixen.Editor.App