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.

← API Reference

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

TypeDescription
RiverSpline-defined river with per-point width and depth.
LakeClosed-loop spline defining shoreline.
OceanShoreline spline, rendered to far distance.
CustomGameplay-only water body (requires custom mesh).

Method summary

Method Group Mutating Purpose
listWaterBodiesDiscoverynoAll water bodies with type + path.
getInfoDiscoverynoPer-body spline info, wave config, materials, islands, exclusion volumes.
getIslandsDiscoverynoIsland actors associated with a water body.
getExclusionVolumesDiscoverynoExclusion volumes within a water body.
querySurfacePhysicsnoSurface location, normal, velocity, and depth at a point.
getBuoyancyStatePhysicsnoActor's overlap state + surface info.
getVelocityAtSplineKeySplinenoScalar and vector velocity at a spline key.
getAudioIntensityAtSplineKeySplinenoAudio intensity at a spline key.
getRiverWidthSplinenoWidth at a river spline key.
setRiverWidthSplineyesSet width at a river spline key.
getRiverDepthSplinenoDepth at a river spline key.
setRiverDepthSplineyesSet depth at a river spline key.
setVelocityAtSplineKeySplineyesSet water velocity at a spline point.
setAudioIntensityAtSplineKeySplineyesSet audio intensity at a spline point.
syncSplineDataSplineyesBroadcast spline data changes to dependents.
getWaveConfigWavesnoWave class, type, generator, and max height.
setWaveConfigWavesyesGuides callers to RC for Gerstner wave property editing.
setWavesWavesyesAssign a wave asset to a water body.
getMaterialsMaterialsnoMaterial paths + MID availability.
setWaterMaterialMaterialsyesSet water / info / static-mesh material.
setUnderwaterMaterialMaterialsyesSet underwater post-process material.
setRiverTransitionMaterialsMaterialsyesSet river lake/ocean transition materials.
setStaticMeshEnabledMaterialsyesToggle water static-mesh rendering.
getGlobalStateGlobalno14 subsystem values (ocean height, rendering, timing).
setOceanFloodHeightGlobalyesSet the ocean flood level.
logMessageGlobalyesPrint a message to the water log.
getZoneInfoZonesnoZone index, extent, render resolution.
setZoneZonesyesConfigure a water zone.
setNiagaraWaterBodyNiagarayesGuides callers to RC for Niagara water parameter setup.
notifyPontoonBuoyancyyesTrigger 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).

ClassActive BCCoveredNotes
UWaterBodyComponent3131Core water body operations.
AWaterBody44Type queries, wave assignment.
UWaterBodyRiverComponent77River-specific width/depth.
UWaterSubsystem1616Global state, ocean height.
UBuoyancyComponent66Physics buoyancy queries.
AWaterZone44Zone geometry and rendering.
UWaterSplineComponent11Spline sync.
AWaterBodyIsland11Island spline query.
UNiagaraWaterFunctionLibrary11**Via RC guidance (C++ private).

Related