Vixen
caa30e12
csharp
public interface IWaterScene

What a viewport needs to turn a scene's water components into a surface it can draw.

Read the guide page for this →

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