public readonly record struct WaterDisturbanceSomething disturbed the water here, this hard, this wide.
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 PositionWhere, on the ground plane.
public float RadiusHow wide the disturbance is, in metres.
public float StrengthHow hard, in metres a second. Negative pushes the surface down.
public WaterDisturbanceKind KindWhat sort of thing it was.
public float HeightWhere 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