editor.atmosphere
Eight convenience methods for volumetric clouds, sky atmosphere, exponential height fog, and sky light. Bulk reflection-based getters and setters replace 94 individual BlueprintCallable setters with four get*Info / two set*Properties calls, plus a one-shot spawnSetup that stands up a full sky-and-weather rig in a single call. AI agents reach through this namespace to configure atmospheric surfaces the native Remote Control surface cannot touch concisely.
Always available. The atmosphere handler lives in the Engine module with no additional plugin dependency. All 94 individual property setters (21 cloud + 29 atmosphere + 30 fog + 14 sky light) remain accessible via editor.rc.call when fine-grained control is preferable to the bulk setter.
Method summary
| Method | Mutating | Tier | Purpose |
|---|---|---|---|
listComponents | no | Free | Enumerate all atmosphere actors/components in the level. |
getCloudInfo | no | Free | Bulk read every property on the VolumetricCloudComponent. |
setCloudProperties | yes | Free | Bulk write VolumetricCloudComponent properties. |
getSkyAtmosphereInfo | no | Free | Bulk read SkyAtmosphereComponent properties. |
getFogInfo | no | Free | Bulk read ExponentialHeightFogComponent properties. |
setFogProperties | yes | Free | Bulk write ExponentialHeightFogComponent properties. |
getSkyLightInfo | no | Free | Bulk read SkyLightComponent properties. |
spawnSetup | yes | Free | One-call spawn of the full atmosphere rig (up to 5 actors). |
editor.atmosphere.listComponents
Discover all atmosphere-related actors and their components in the current level. Returns one row per matching component.
No parameters.
Returns:
| Field | Type | Description |
|---|---|---|
components | array | Each: {actor_name, actor_path, component_type, component_path, enabled}. Types: VolumetricCloud, SkyAtmosphere, ExponentialHeightFog, SkyLight, DirectionalLight. |
count | number | Number of components returned. |
Example Request:
{ "jsonrpc": "2.0", "id": 1, "method": "editor.atmosphere.listComponents" } Example Response:
{
"jsonrpc": "2.0", "id": 1,
"result": {
"components": [
{ "actor_name": "SkyAtmosphere", "actor_path": "/Game/Maps/L_Main.L_Main:PersistentLevel.SkyAtmosphere", "component_type": "SkyAtmosphere", "component_path": "SkyAtmosphereComponent", "enabled": true },
{ "actor_name": "VolumetricCloud", "actor_path": "/Game/Maps/L_Main.L_Main:PersistentLevel.VolumetricCloud", "component_type": "VolumetricCloud", "component_path": "VolumetricCloudComponent", "enabled": true }
],
"count": 2
}
} editor.atmosphere.getCloudInfo
Bulk read every editable property on a VolumetricCloudComponent via reflection. Default target is the first matching actor in the level when actor is omitted.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
actor | string | No | Actor name or label. Defaults to the first matching actor. |
Returns:
| Field | Type | Description |
|---|---|---|
actor_name | string | Resolved actor name. |
actor_path | string | Full actor path. |
properties | object | Map of 21 cloud properties: LayerBottomAltitude, LayerHeight, PlanetRadius, Material, and more. |
Example Request:
{ "jsonrpc": "2.0", "id": 2, "method": "editor.atmosphere.getCloudInfo" } Example Response:
{
"jsonrpc": "2.0", "id": 2,
"result": {
"actor_name": "VolumetricCloud",
"actor_path": "/Game/Maps/L_Main.L_Main:PersistentLevel.VolumetricCloud",
"properties": { "LayerBottomAltitude": 5.0, "LayerHeight": 10.0, "PlanetRadius": 6360.0, "Material": "/Engine/EngineSky/VolumetricClouds/m_SimpleVolumetricCloud_Inst.m_SimpleVolumetricCloud_Inst" }
}
} editor.atmosphere.setCloudProperties
Bulk write VolumetricCloudComponent properties. Pass one or more property-name/value pairs as params; each lands through reflection. Failed per-property writes surface in the errors array without rolling back successful ones.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
actor | string | No | Actor name or label. Defaults to the first matching actor. |
| property names | varies | Yes | Any property from getCloudInfo, name-matched. |
Returns:
| Field | Type | Description |
|---|---|---|
success | bool | True if at least one property write succeeded. |
properties_changed | number | Count of successful writes. |
errors | array | Present on per-property failure. Each: {name, reason}. |
Example Request:
{
"jsonrpc": "2.0", "id": 3,
"method": "editor.atmosphere.setCloudProperties",
"params": { "LayerBottomAltitude": 3.5, "LayerHeight": 8.0 }
} Example Response:
{ "jsonrpc": "2.0", "id": 3, "result": { "success": true, "properties_changed": 2 } } editor.atmosphere.getSkyAtmosphereInfo
Bulk read every editable property on a SkyAtmosphereComponent via reflection. 29 properties returned.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
actor | string | No | Actor name or label. Defaults to first matching actor. |
Returns:
| Field | Type | Description |
|---|---|---|
actor_name | string | Resolved actor name. |
actor_path | string | Full actor path. |
properties | object | Map of 29 atmosphere properties: BottomRadius, AtmosphereHeight, RayleighScattering, MieScattering, and more. |
Example Request:
{ "jsonrpc": "2.0", "id": 4, "method": "editor.atmosphere.getSkyAtmosphereInfo" } Example Response:
{
"jsonrpc": "2.0", "id": 4,
"result": {
"actor_name": "SkyAtmosphere",
"actor_path": "/Game/Maps/L_Main.L_Main:PersistentLevel.SkyAtmosphere",
"properties": { "BottomRadius": 6360.0, "AtmosphereHeight": 60.0, "MieScatteringScale": 0.003996, "RayleighScatteringScale": 0.033100 }
}
} editor.atmosphere.getFogInfo
Bulk read every editable property on an ExponentialHeightFogComponent via reflection. 30 properties returned, including the nested VolumetricFog struct.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
actor | string | No | Actor name or label. Defaults to first matching actor. |
Returns:
| Field | Type | Description |
|---|---|---|
actor_name | string | Resolved actor name. |
actor_path | string | Full actor path. |
properties | object | Map of 30 fog properties: FogDensity, FogHeightFalloff, FogInscatteringColor, VolumetricFog, and more. |
Example Request:
{ "jsonrpc": "2.0", "id": 5, "method": "editor.atmosphere.getFogInfo" } Example Response:
{
"jsonrpc": "2.0", "id": 5,
"result": {
"actor_name": "ExponentialHeightFog",
"actor_path": "/Game/Maps/L_Main.L_Main:PersistentLevel.ExponentialHeightFog",
"properties": { "FogDensity": 0.02, "FogHeightFalloff": 0.2, "FogInscatteringColor": "(R=0.5,G=0.6,B=0.7,A=1.0)" }
}
} editor.atmosphere.setFogProperties
Bulk write ExponentialHeightFogComponent properties. Same contract as setCloudProperties: per-property reflection writes, failed entries surface in errors.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
actor | string | No | Actor name or label. Defaults to first matching actor. |
| property names | varies | Yes | Any property from getFogInfo, name-matched. |
Returns:
| Field | Type | Description |
|---|---|---|
success | bool | True if at least one property write succeeded. |
properties_changed | number | Count of successful writes. |
errors | array | Present on per-property failure. Each: {name, reason}. |
Example Request:
{
"jsonrpc": "2.0", "id": 6,
"method": "editor.atmosphere.setFogProperties",
"params": { "FogDensity": 0.04, "FogHeightFalloff": 0.15 }
} Example Response:
{ "jsonrpc": "2.0", "id": 6, "result": { "success": true, "properties_changed": 2 } } editor.atmosphere.getSkyLightInfo
Bulk read every editable property on a SkyLightComponent via reflection, plus the commonly-checked real_time_capture flag as a top-level field.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
actor | string | No | Actor name or label. Defaults to first matching actor. |
Returns:
| Field | Type | Description |
|---|---|---|
actor_name | string | Resolved actor name. |
actor_path | string | Full actor path. |
real_time_capture | bool | Whether the sky light rebuilds its capture every frame. |
properties | object | Map of 14 sky light properties: Intensity, LightColor, SourceType, and more. |
Example Request:
{ "jsonrpc": "2.0", "id": 7, "method": "editor.atmosphere.getSkyLightInfo" } Example Response:
{
"jsonrpc": "2.0", "id": 7,
"result": {
"actor_name": "SkyLight",
"actor_path": "/Game/Maps/L_Main.L_Main:PersistentLevel.SkyLight",
"real_time_capture": true,
"properties": { "Intensity": 1.0, "LightColor": "(R=1,G=1,B=1,A=1)", "SourceType": "SLS_CapturedScene" }
}
} editor.atmosphere.spawnSetup
Stand up a complete atmosphere rig in one call. Spawns up to five actors (SkyAtmosphere, VolumetricCloud, ExponentialHeightFog, SkyLight, DirectionalLight) with sensible defaults. Skips actors that already exist in the level -- idempotent on re-call.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sun_rotation | object | No | {pitch, yaw, roll}. Default {-50, -30, 0}. |
Returns:
| Field | Type | Description |
|---|---|---|
success | bool | True if the call completed. |
spawned | array | Actors the handler created this call. |
skipped | array | Actors already present in the level. |
spawned_count | number | Count of newly-spawned actors. |
skipped_count | number | Count of skipped actors. |
Example Request:
{
"jsonrpc": "2.0", "id": 8,
"method": "editor.atmosphere.spawnSetup",
"params": { "sun_rotation": { "pitch": -35, "yaw": 45, "roll": 0 } }
} Example Response:
{
"jsonrpc": "2.0", "id": 8,
"result": {
"success": true,
"spawned": ["SkyAtmosphere", "VolumetricCloud", "ExponentialHeightFog", "SkyLight", "DirectionalLight"],
"skipped": [],
"spawned_count": 5,
"skipped_count": 0
}
} Related
- API Reference index
- editor.rc -- Remote Control passthrough for the 94 individual cloud/atmosphere/fog/sky-light BC setters
- editor.water -- paired ocean/river/lake surfaces for full outdoor environments