Vixen
c7401864
csharp
public readonly record struct WaterDisturbance

Something disturbed the water here, this hard, this wide.

Read the guide page for this →

Remarks

[35 § D12](../../docs/plan/35-water.md#d12-ripples-are-a-sliding-window-height-field-and-they-are-displacement-not-geometry)'s wake and splash hooks, as one event with two consumers. A ripple field turns it into an injection; Vixen.Vfx turns it into a burst of spray. Which is the same shape as § D2's one-evaluator rule and is there for the same reason: two producers — one for the simulation and one for the particles — is a wake whose spray is not where the ripple is, and the frame it stops agreeing on is the frame something changed in only one of them.

⚠ In the kernel, so a dedicated server produces the same events and drops them. A headless build has no particles and still simulates the boat that would have made them; putting the event where the renderer is would mean the two builds disagreed about how the hull was moving, which is a desync with an entirely innocent-looking cause.

⚠ A strength in metres a second, which is a rate and not a displacement. See Inject: a source that pushed the height down would carve a permanent dent in the lake, where one that pushes the rate down makes a depression that springs back.

Fields and properties (5)

  • public Vector2 Position

    Where, on the ground plane.

  • public float Radius

    How wide the disturbance is, in metres.

  • public float Strength

    How hard, in metres a second. Negative pushes the surface down.

  • public WaterDisturbanceKind Kind

    What sort of thing it was.

  • public float Height

    Where the surface was, in world units — for a consumer that places geometry.

Methods (1)

  • public WaterDisturbance(Vector2 Position, float Radius, float Strength, WaterDisturbanceKind Kind, float Height)

    Something disturbed the water here, this hard, this wide.

Used by (4)

  • WaterDisturbanceTestsVixen.Water.Tests
  • WaterDisturbancesVixen.Water
  • WaterRippleSimulationVixen.Rendering.Water
  • WaterRipplesVixen.Water