Included in Oceanology Pro and Oceanology Lite.
Read the real water surface directly inside Niagara — spawn splash, spray, foam or debris that sit on the actual animated waves without Blueprint round-trips.
Oceanology Pro ships a Niagara Data Interface, listed simply as Water, that lets a particle system read the live water surface. Add it as a user parameter, point it at a water body, and any module in the system can ask for the water plane position, the animated surface position, the surface normal, the water velocity, the depth and whether the point sits inside an exclusion volume - per particle, at whatever position that particle cares about. Effects stop being decoration painted near the water and start being driven by it.
There are three ways to tell the interface which body to read. Set Source Actor Or Component directly, which accepts either an actor or a water component. Enable Find Water Body On Spawn and let it pick the closest body by water plane distance, iterating every water actor in the world and skipping any whose query lands in an exclusion volume. Or set it from Blueprint at runtime with Set Oceanology Water Component, passing the Niagara component, the user parameter name and the water component. Changing the body bumps an internal change id, so every running system instance re-resolves on its next tick rather than clinging to the old body.
Every function funnels into the same water body query the rest of the plugin uses, with the appropriate flags for location, normal, velocity, depth and waves. That matters more than it sounds: the spray emitter, the character's swimming component and the buoyancy path all resolve the surface through that single call, so a splash sits exactly where a swimmer's head breaks the surface, and a debris particle snapped to the surface position sits exactly where a floating crate would. There is no second copy of the wave maths in a Niagara graph to drift out of sync when you change wave systems. Ocean, lake, river and custom bodies all answer the same query.
Water depth is treated carefully. By default the interface evaluates depth once per frame at the system instance's own transform on the game thread and hands that single value to every particle, because a genuine per-particle depth query reaches into landscape proxies that stream in and out underneath it. Per-particle depth is therefore available but gated behind a console variable that is off by default and documented as unsafe. Positions travel in and out as Niagara positions and are converted through the system instance's own large-world-coordinate converter, so the interface stays correct far from the origin. When the Niagara debugger is open, the bound water component is printed on the debug HUD, which makes a mis-bound user parameter obvious immediately.
| Oceanology NextGen | Oceanology Pro | |
|---|---|---|
| Niagara access to the water | No water data interface. The only Niagara integration sets the engine's Landscape data interface on a system | A dedicated Water data interface with per-particle surface, normal, velocity, depth and exclusion queries |
| Where the wave maths lives | An effect that needs the surface reimplements the wave evaluation in its own graph or material | One shared water body query, the same entry point swimming and buoyancy call |
| Choosing the water body | Not applicable | Soft reference in the details panel, find-nearest-on-spawn, or a Blueprint setter that re-resolves live instances |
| Large worlds | Not applicable | Niagara positions converted through the system's own large-world-coordinate converter |
| Class | UOceanologyNiagaraDataInterfaceWater, shown as Water |
| Simulation target | CPU simulation only |
| Functions | IsValid, GetWaterSurfaceInfo, GetWaveParamLookupTableOffset, GetWaterDataAtPoint |
| Body binding | Source Actor Or Component, Find Water Body On Spawn, or the Blueprint setter |
| Blueprint setter | Set Oceanology Water Component (Niagara component, parameter name, water component) |
| Depth by default | One query at the system transform, refreshed every frame |
| Per-particle depth | fx.Niagara.OceanologyWater.DepthQuerySupported, default 0 |
| Query flags used | ComputeLocation, ComputeNormal, ComputeVelocity, ComputeDepth, IncludeWaves, SimpleWaves |
| Coordinates | Niagara positions in and out, LWC-converted per system instance |
| Debugging | Bound water component printed on the Niagara debug HUD |
| Plugin requirements | Niagara and NiagaraFluids, enabled by the Oceanology plugin descriptor |
This is one entry on the Galidar roadmap. For what already shipped in each release, see the Changelog.