editor.water
Thirty methods covering 100% of UE 5.7's Water System BlueprintCallable surface (54 active BC functions). Water-body discovery, surface physics (position, normal, velocity, depth), river spline width/depth/velocity, wave configuration, materials, global ocean state, water zones, and buoyancy. AI agents reach through this namespace to author and probe water surfaces that the base editor otherwise requires property-path scripting to touch.
Requires: the Water plugin (Experimental). If not enabled, all methods return -32001 with the message "Water plugin not enabled. Enable it in Edit > Plugins > Water."
Water body types
| Type | Description |
|---|---|
| River | Spline-defined river with per-point width and depth. |
| Lake | Closed-loop spline defining shoreline. |
| Ocean | Shoreline spline, rendered to far distance. |
| Custom | Gameplay-only water body (requires custom mesh). |
Method summary
| Method | Group | Mutating | Purpose |
|---|---|---|---|
listWaterBodies | Discovery | no | All water bodies with type + path. |
getInfo | Discovery | no | Per-body spline info, wave config, materials, islands, exclusion volumes. |
getIslands | Discovery | no | Island actors associated with a water body. |
getExclusionVolumes | Discovery | no | Exclusion volumes within a water body. |
querySurface | Physics | no | Surface location, normal, velocity, and depth at a point. |
getBuoyancyState | Physics | no | Actor's overlap state + surface info. |
getVelocityAtSplineKey | Spline | no | Scalar and vector velocity at a spline key. |
getAudioIntensityAtSplineKey | Spline | no | Audio intensity at a spline key. |
getRiverWidth | Spline | no | Width at a river spline key. |
setRiverWidth | Spline | yes | Set width at a river spline key. |
getRiverDepth | Spline | no | Depth at a river spline key. |
setRiverDepth | Spline | yes | Set depth at a river spline key. |
setVelocityAtSplineKey | Spline | yes | Set water velocity at a spline point. |
setAudioIntensityAtSplineKey | Spline | yes | Set audio intensity at a spline point. |
syncSplineData | Spline | yes | Broadcast spline data changes to dependents. |
getWaveConfig | Waves | no | Wave class, type, generator, and max height. |
setWaveConfig | Waves | yes | Guides callers to RC for Gerstner wave property editing. |
setWaves | Waves | yes | Assign a wave asset to a water body. |
getMaterials | Materials | no | Material paths + MID availability. |
setWaterMaterial | Materials | yes | Set water / info / static-mesh material. |
setUnderwaterMaterial | Materials | yes | Set underwater post-process material. |
setRiverTransitionMaterials | Materials | yes | Set river lake/ocean transition materials. |
setStaticMeshEnabled | Materials | yes | Toggle water static-mesh rendering. |
getGlobalState | Global | no | 14 subsystem values (ocean height, rendering, timing). |
setOceanFloodHeight | Global | yes | Set the ocean flood level. |
logMessage | Global | yes | Print a message to the water log. |
getZoneInfo | Zones | no | Zone index, extent, render resolution. |
setZone | Zones | yes | Configure a water zone. |
setNiagaraWaterBody | Niagara | yes | Guides callers to RC for Niagara water parameter setup. |
notifyPontoon | Buoyancy | yes | Trigger pontoon enter/exit on a buoyancy component. |
Discovery & inspection (4)
editor.water.listWaterBodies
List every water body in the level.
No parameters.
Returns: Array of water bodies with name, type, path.
Example Request:
{ "jsonrpc": "2.0", "id": 1, "method": "editor.water.listWaterBodies" } Example Response:
{
"jsonrpc": "2.0", "id": 1,
"result": {
"waterBodies": [
{ "name": "WaterBodyRiver_0", "type": "River", "path": "/Game/Maps/L_Main.L_Main:PersistentLevel.WaterBodyRiver_0" },
{ "name": "WaterBodyOcean_0", "type": "Ocean", "path": "/Game/Maps/L_Main.L_Main:PersistentLevel.WaterBodyOcean_0" }
]
}
} editor.water.getInfo
Per-body deep inspection: type, spline summary, wave config, material paths, associated islands, and exclusion volumes.
Parameters: name (string, required) -- water body actor name.
Example Request:
{ "jsonrpc": "2.0", "id": 2, "method": "editor.water.getInfo", "params": { "name": "WaterBodyRiver_0" } } Example Response:
{
"jsonrpc": "2.0", "id": 2,
"result": {
"type": "River",
"spline": { "num_points": 8, "length_cm": 12480.0 },
"waves": { "wave_class": "GerstnerWaterWaves", "num_waves": 6, "max_wave_height": 240.0 },
"materials": { "water": "/Water/Materials/M_Water_River.M_Water_River", "underwater": "/Water/Materials/M_Underwater_River.M_Underwater_River" },
"islands": [],
"exclusion_volumes": []
}
} editor.water.getIslands
Islands associated with a water body.
Parameters: name (string, required).
Example Request:
{ "jsonrpc": "2.0", "id": 3, "method": "editor.water.getIslands", "params": { "name": "WaterBodyOcean_0" } } Example Response:
{ "jsonrpc": "2.0", "id": 3, "result": { "islands": [ { "name": "WaterBodyIsland_0", "path": "/Game/Maps/L_Main.L_Main:PersistentLevel.WaterBodyIsland_0" } ] } } editor.water.getExclusionVolumes
Exclusion volumes on a water body (regions of the body explicitly excluded from rendering/physics).
Parameters: name (string, required).
Example Request:
{ "jsonrpc": "2.0", "id": 4, "method": "editor.water.getExclusionVolumes", "params": { "name": "WaterBodyOcean_0" } } Example Response:
{ "jsonrpc": "2.0", "id": 4, "result": { "exclusion_volumes": [] } } Surface physics (2)
editor.water.querySurface
Query the water surface at a world-space point. Returns surface location, normal, velocity, and depth.
Parameters: name, x, y, z.
Example Request:
{ "jsonrpc": "2.0", "id": 5, "method": "editor.water.querySurface", "params": { "name": "WaterBodyRiver_0", "x": 1000, "y": 2000, "z": 0 } } Example Response:
{
"jsonrpc": "2.0", "id": 5,
"result": {
"surface_location": [1000, 2000, 12.4],
"surface_normal": [0, 0, 1],
"surface_velocity": [120, 0, 0],
"depth_cm": 182.0
}
} editor.water.getBuoyancyState
Query an actor's overlap with water bodies plus the sampled surface info at its location.
Parameters: actorName.
Example Request:
{ "jsonrpc": "2.0", "id": 6, "method": "editor.water.getBuoyancyState", "params": { "actorName": "Boat_01" } } Example Response:
{
"jsonrpc": "2.0", "id": 6,
"result": {
"in_water": true,
"water_bodies": ["WaterBodyRiver_0"],
"surface_location":[400, 200, 8.8],
"submerged_depth": 62.5
}
} Spline properties (9)
editor.water.getVelocityAtSplineKey
Scalar velocity and velocity vector at a spline key on any water body.
Parameters: name, splineKey (float in [0, spline length]).
Example Request:
{ "jsonrpc": "2.0", "id": 7, "method": "editor.water.getVelocityAtSplineKey", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5 } } Example Response:
{ "jsonrpc": "2.0", "id": 7, "result": { "velocity_scalar": 120.0, "velocity_vector": [120, 0, 0] } } editor.water.getAudioIntensityAtSplineKey
Audio intensity float at a spline key.
Parameters: name, splineKey.
Example Request:
{ "jsonrpc": "2.0", "id": 8, "method": "editor.water.getAudioIntensityAtSplineKey", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5 } } Example Response:
{ "jsonrpc": "2.0", "id": 8, "result": { "audio_intensity": 0.72 } } editor.water.getRiverWidth
Width at a spline key. River bodies only.
Parameters: name, splineKey.
Example Request:
{ "jsonrpc": "2.0", "id": 9, "method": "editor.water.getRiverWidth", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5 } } Example Response:
{ "jsonrpc": "2.0", "id": 9, "result": { "width_cm": 480.0 } } editor.water.setRiverWidth
Set width at a river spline key.
Parameters: name, splineKey, width.
Example Request:
{ "jsonrpc": "2.0", "id": 10, "method": "editor.water.setRiverWidth", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5, "width": 500 } } Example Response:
{ "jsonrpc": "2.0", "id": 10, "result": { "success": true, "width_cm": 500.0 } } editor.water.getRiverDepth
Depth at a river spline key.
Parameters: name, splineKey.
Example Request:
{ "jsonrpc": "2.0", "id": 11, "method": "editor.water.getRiverDepth", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5 } } Example Response:
{ "jsonrpc": "2.0", "id": 11, "result": { "depth_cm": 200.0 } } editor.water.setRiverDepth
Set depth at a river spline key.
Parameters: name, splineKey, depth.
Example Request:
{ "jsonrpc": "2.0", "id": 12, "method": "editor.water.setRiverDepth", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5, "depth": 240 } } Example Response:
{ "jsonrpc": "2.0", "id": 12, "result": { "success": true, "depth_cm": 240.0 } } editor.water.setVelocityAtSplineKey
Set water velocity at a spline point.
Parameters: name, splineKey, velocity.
Example Request:
{ "jsonrpc": "2.0", "id": 13, "method": "editor.water.setVelocityAtSplineKey", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5, "velocity": 180 } } Example Response:
{ "jsonrpc": "2.0", "id": 13, "result": { "success": true } } editor.water.setAudioIntensityAtSplineKey
Set audio intensity at a spline point.
Parameters: name, splineKey, intensity.
Example Request:
{ "jsonrpc": "2.0", "id": 14, "method": "editor.water.setAudioIntensityAtSplineKey", "params": { "name": "WaterBodyRiver_0", "splineKey": 0.5, "intensity": 0.85 } } Example Response:
{ "jsonrpc": "2.0", "id": 14, "result": { "success": true } } editor.water.syncSplineData
Synchronize spline data changes and broadcast the update to dependents.
Parameters: name.
Example Request:
{ "jsonrpc": "2.0", "id": 15, "method": "editor.water.syncSplineData", "params": { "name": "WaterBodyRiver_0" } } Example Response:
{ "jsonrpc": "2.0", "id": 15, "result": { "success": true } } Waves (3)
editor.water.getWaveConfig
Return the body's wave class, type, generator, and max height.
Parameters: name.
Example Request:
{ "jsonrpc": "2.0", "id": 16, "method": "editor.water.getWaveConfig", "params": { "name": "WaterBodyOcean_0" } } Example Response:
{
"jsonrpc": "2.0", "id": 16,
"result": { "wave_class": "GerstnerWaterWaves", "wave_type": "Gerstner", "generator": "UGerstnerWaterWaveGeneratorBase", "max_wave_height_cm": 240.0 }
} editor.water.setWaveConfig
Guidance method. Individual Gerstner wave properties are edited via editor.rc.call; this method returns the RC invocation callers should issue.
No parameters.
Example Request:
{ "jsonrpc": "2.0", "id": 17, "method": "editor.water.setWaveConfig" } Example Response:
{
"jsonrpc": "2.0", "id": 17,
"result": { "guidance": "Use editor.rc.call on UGerstnerWaterWaves to edit individual wave properties. See the documentation link in the response notes.", "rc_example_method": "editor.rc.call" }
} editor.water.setWaves
Assign a wave asset to a water body.
Parameters: name, wavePath.
Example Request:
{ "jsonrpc": "2.0", "id": 18, "method": "editor.water.setWaves", "params": { "name": "WaterBodyOcean_0", "wavePath": "/Water/Waves/GerstnerOcean.GerstnerOcean" } } Example Response:
{ "jsonrpc": "2.0", "id": 18, "result": { "success": true } } Materials (5)
editor.water.getMaterials
Return all material paths on a water body plus MID availability flags.
Parameters: name.
Example Request:
{ "jsonrpc": "2.0", "id": 19, "method": "editor.water.getMaterials", "params": { "name": "WaterBodyRiver_0" } } Example Response:
{
"jsonrpc": "2.0", "id": 19,
"result": {
"water": "/Water/Materials/M_Water_River.M_Water_River",
"info": "/Water/Materials/M_Info_River.M_Info_River",
"static_mesh": "/Water/Materials/M_StaticMesh.M_StaticMesh",
"underwater": "/Water/Materials/M_Underwater_River.M_Underwater_River",
"has_water_mid": true,
"has_info_mid": true
}
} editor.water.setWaterMaterial
Set a water body's water / info / static-mesh material.
Parameters: name, material, type (one of water, info, staticMesh).
Example Request:
{ "jsonrpc": "2.0", "id": 20, "method": "editor.water.setWaterMaterial", "params": { "name": "WaterBodyRiver_0", "material": "/Water/Materials/M_Water_Muddy.M_Water_Muddy", "type": "water" } } Example Response:
{ "jsonrpc": "2.0", "id": 20, "result": { "success": true } } editor.water.setUnderwaterMaterial
Set the underwater post-process material. Optionally updates the water material at the same time.
Parameters: name, underwaterMaterial, optional waterMaterial.
Example Request:
{ "jsonrpc": "2.0", "id": 21, "method": "editor.water.setUnderwaterMaterial", "params": { "name": "WaterBodyRiver_0", "underwaterMaterial": "/Water/Materials/M_Underwater_Murky.M_Underwater_Murky" } } Example Response:
{ "jsonrpc": "2.0", "id": 21, "result": { "success": true } } editor.water.setRiverTransitionMaterials
Set river transition materials for lake and ocean adjacency.
Parameters: name, optional lakeMaterial, optional oceanMaterial.
Example Request:
{
"jsonrpc": "2.0", "id": 22,
"method": "editor.water.setRiverTransitionMaterials",
"params": { "name": "WaterBodyRiver_0", "lakeMaterial": "/Water/Materials/M_River_To_Lake.M_River_To_Lake" }
} Example Response:
{ "jsonrpc": "2.0", "id": 22, "result": { "success": true } } editor.water.setStaticMeshEnabled
Toggle the water body's static-mesh rendering path.
Parameters: name, enabled.
Example Request:
{ "jsonrpc": "2.0", "id": 23, "method": "editor.water.setStaticMeshEnabled", "params": { "name": "WaterBodyOcean_0", "enabled": true } } Example Response:
{ "jsonrpc": "2.0", "id": 23, "result": { "success": true, "enabled": true } } Global ocean state (3)
editor.water.getGlobalState
Return 14 subsystem values: ocean height, rendering-pipeline state, timing.
No parameters.
Example Request:
{ "jsonrpc": "2.0", "id": 24, "method": "editor.water.getGlobalState" } Example Response:
{
"jsonrpc": "2.0", "id": 24,
"result": {
"ocean_base_height": 0.0,
"ocean_flood_height": 0.0,
"fully_submerged_depth": 200.0,
"water_render_enabled": true,
"wave_time": 1248.7
}
} editor.water.setOceanFloodHeight
Set the ocean flood level.
Parameters: height.
Example Request:
{ "jsonrpc": "2.0", "id": 25, "method": "editor.water.setOceanFloodHeight", "params": { "height": 100.0 } } Example Response:
{ "jsonrpc": "2.0", "id": 25, "result": { "success": true, "ocean_flood_height": 100.0 } } editor.water.logMessage
Print a message to the water log.
Parameters: message, optional warning (bool).
Example Request:
{ "jsonrpc": "2.0", "id": 26, "method": "editor.water.logMessage", "params": { "message": "Ocean flood at 100cm", "warning": false } } Example Response:
{ "jsonrpc": "2.0", "id": 26, "result": { "success": true } } Water zones (2)
editor.water.getZoneInfo
Return the zone index, extent, and render resolution. Pass name to scope to a body's zone; omit to query the scene zone.
Parameters: optional name.
Example Request:
{ "jsonrpc": "2.0", "id": 27, "method": "editor.water.getZoneInfo" } Example Response:
{
"jsonrpc": "2.0", "id": 27,
"result": {
"zone_index": 0,
"extent": [51200, 51200, 12800],
"render_resolution":[1024, 1024]
}
} editor.water.setZone
Configure a water zone: extent, render resolution, far material, zone override.
Parameters: waterBodyName, optional zoneOverride, optional extent, optional resolution, optional farMaterial.
Example Request:
{
"jsonrpc": "2.0", "id": 28,
"method": "editor.water.setZone",
"params": { "waterBodyName": "WaterBodyOcean_0", "extent": [102400, 102400, 12800], "resolution": [2048, 2048] }
} Example Response:
{ "jsonrpc": "2.0", "id": 28, "result": { "success": true } } Niagara & buoyancy (2)
editor.water.setNiagaraWaterBody
Guidance method. Niagara water-parameter setup is driven through editor.rc.call because the underlying function library is private C++. This method returns the RC recipe.
No parameters.
Example Request:
{ "jsonrpc": "2.0", "id": 29, "method": "editor.water.setNiagaraWaterBody" } Example Response:
{ "jsonrpc": "2.0", "id": 29, "result": { "guidance": "Use editor.rc.call to invoke UNiagaraWaterFunctionLibrary setters. Requires Niagara + Water plugins (e.g. waterfall surfaces)." } } editor.water.notifyPontoon
Trigger pontoon enter or exit on an actor's buoyancy component.
Parameters: actorName, optional entered (bool), optional radius.
Example Request:
{ "jsonrpc": "2.0", "id": 30, "method": "editor.water.notifyPontoon", "params": { "actorName": "Boat_01", "entered": true, "radius": 50.0 } } Example Response:
{ "jsonrpc": "2.0", "id": 30, "result": { "success": true, "entered": true } } BC function coverage
54 of 54 active BlueprintCallable functions covered. 13 deprecated functions excluded (non-deprecated equivalents provided).
| Class | Active BC | Covered | Notes |
|---|---|---|---|
| UWaterBodyComponent | 31 | 31 | Core water body operations. |
| AWaterBody | 4 | 4 | Type queries, wave assignment. |
| UWaterBodyRiverComponent | 7 | 7 | River-specific width/depth. |
| UWaterSubsystem | 16 | 16 | Global state, ocean height. |
| UBuoyancyComponent | 6 | 6 | Physics buoyancy queries. |
| AWaterZone | 4 | 4 | Zone geometry and rendering. |
| UWaterSplineComponent | 1 | 1 | Spline sync. |
| AWaterBodyIsland | 1 | 1 | Island spline query. |
| UNiagaraWaterFunctionLibrary | 1 | 1* | *Via RC guidance (C++ private). |
Related
- API Reference index
- editor.atmosphere -- sky, clouds, fog for a full outdoor environment
- editor.landscape -- terrain heightmap, layers, materials (river banks)
- editor.rc -- Remote Control passthrough for Gerstner wave and Niagara water parameters