Skip to content

Engine

90 tools. Back to the index.

add_niagara_data_interface

Additive.

Add a new UNiagaraDataInterface user-parameter binding to a Niagara system, inside an undo transaction, request a recompile and save the system; success requires the save. A user parameter that already has this name and class is left as is (added false, already_exists true, nothing saved); one with this name and any other type is an error. The inverse is remove_niagara_data_interface.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the new user-parameter (no "User." prefix)
data_interface_class string yes Data interface class name (e.g. "StaticMesh", "Texture"): a loaded data interface class with that name, else /Script/Niagara.NiagaraDataInterface<Name>

Returns: { system_path: string, parameter_name: string, data_interface_class: string, data_interface_class_path?: string, offset?: int, added?: bool, already_exists?: bool, saved: bool, save_error?: string }

add_niagara_decal_renderer

Additive.

Add a NiagaraDecalRendererProperties (UNiagaraDecalRendererProperties) to a Niagara emitter with decal-specific defaults applied via reflection. Companion to add_niagara_renderer with renderer_type='Decal' — use this cmd when you want to seed decal config (material, source mode, visibility tag, screen-size fade) in the same call. Then requests a system compile and saves.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_name string yes Name of the emitter handle (the human-readable name in the system's emitter list).
material_path string no Optional asset path; sets the renderer's Material UPROPERTY.
source_mode string no Optional ENiagaraRendererSourceDataMode name (Particles/Emitter). Default Particles.
renderer_visibility number no Optional int32 visibility tag (default 0).
decal_screen_size_fade number no Optional float fade threshold (default 0.0).

Returns: { system_path, emitter_name, renderer_index, renderer_class, material_path, source_mode, renderer_visibility, decal_screen_size_fade, renderer_count, save_error? }

add_niagara_emitter_from_template

Additive.

Add a copy of a template emitter to a Niagara system (canonical path). Loads the template/parent UNiagaraEmitter asset and adds a standalone copy of it to the system via FNiagaraEditorUtilities::AddEmitterToSystem — the same operation the Niagara editor's "Add Emitter" performs. This rebuilds the emitter's nodes and syncs the system overview graph, then requests a compile and saves the system.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example")
emitter_asset_path string yes Asset path of the source UNiagaraEmitter template (e.g. "/Niagara/DefaultAssets/Templates/Emitters/Fountain.Fountain")

Returns: { system_path: string, source_emitter_asset: string, emitter_handle_id: string, emitter_handle_name: string, is_valid: bool, is_enabled: bool, emitters_before: int, total_emitters: int, success: bool, saved: bool, save_error?: string }

add_niagara_emitter_handle

Additive.

Add an emitter to a Niagara system from an existing UNiagaraEmitter asset. Loads the emitter asset, gets its exposed version GUID, and calls UNiagaraSystem::AddEmitterHandle. The system is saved after modification.

Parameter Type Required Description
system_path string yes Asset path of the target Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_path string no Asset path of the source UNiagaraEmitter to add.
emitter_name string no Optional desired name for the new handle; defaults to the source emitter's name

Returns: { system_path: string, emitter_handle_name: string, emitter_handle_id: string, is_valid: bool, is_enabled: bool, total_emitters: int, saved: bool, save_error?: string }

add_niagara_event_handler

Additive, idempotent.

Add an event handler to a Niagara emitter (the writer for event_handler_count). Constructs an FNiagaraEventScriptProperties (allocating its UNiagaraScript with usage ParticleEventScript, mirroring add_niagara_simulation_stage) and adds it via UNiagaraEmitter::AddEventHandler. Idempotent by source_event_name: if a handler for that event already exists it is returned (already_exists=true) without adding a duplicate. The system is saved after modification. The handler's event-script graph is created in a default state — full event wiring must be completed in the Niagara editor (reported honestly via note); the handler properties are persisted and re-readable.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_name string yes Display name of the emitter handle within the system.
source_event_name string yes Name of the source event this handler consumes (its identity key for idempotency).
execution_mode string no Optional EveryParticle | SpawnedParticles | SingleParticle (default EveryParticle).
spawn_number number no Optional int particles to spawn per event (SpawnedParticles mode).
max_events_per_frame number no Optional int cap on events consumed per frame.
min_spawn_number number no Optional int minimum spawn when random_spawn_number is set.
random_spawn_number boolean no Optional bool: spawn a random count in [min_spawn_number, spawn_number].
source_emitter_id string no Optional GUID of the emitter handle that generates the event (default: this emitter).

Returns: { system_path: string, emitter_name: string, usage_id: string, source_event_name: string, execution_mode: string, spawn_number: int, max_events_per_frame: int, already_exists: bool, event_handler_count: int, saved: bool, save_error?: string, note: string }

add_niagara_light_renderer

Additive.

Add a NiagaraLightRendererProperties (UNiagaraLightRendererProperties) to a Niagara emitter with light-specific defaults applied via reflection. Companion to add_niagara_renderer with renderer_type='Light' — use this cmd when you want to seed light config (radius scale, falloff mode, affects-translucency, color add) in the same call. Then requests a system compile and saves.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_name string yes Name of the emitter handle.
use_inverse_squared_falloff boolean no Optional bool (default true). True => UE physical light; false => use DefaultExponent below.
affects_translucency boolean no Optional bool (default true). Set false for cheaper lights that shouldn't bleed through translucent surfaces.
allow_mega_lights boolean no Optional bool (default false). True => MegaLights path (Lumen); see bMegaLightsCastShadows below.
mega_lights_cast_shadows boolean no Optional bool (default false).
alpha_scales_brightness boolean no Optional bool (default true). When true, particle color alpha modulates brightness.
radius_scale number no Optional float (default 1.0, ClampMin=0).
default_exponent number no Optional float (default 1.0, ClampMin=0); only used when use_inverse_squared_falloff=false.
specular_scale number no Optional float (default 1.0, ClampMin=0).
diffuse_scale number no Optional float (default 1.0, ClampMin=0).
color_add array no Optional [r, g, b] static color shift.

Returns: { system_path, emitter_name, renderer_index, renderer_class, radius_scale, default_exponent, specular_scale, diffuse_scale, color_add:{}, renderer_count, save_error? }

add_niagara_module_to_graph

Additive.

Insert a UNiagaraScript module at a specific index in a Niagara emitter's particle stack graph.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
module_script_path string yes Asset path of the module UNiagaraScript
script_group string no Optional "spawn" or "update"; defaults to "update"
target_index number no Optional stack index for insertion; INDEX_NONE (-1) appends to the end

Returns: { system_path: string, emitter_name: string, module_script_path: string, script_group: string, target_index: int, module_node_name: string, added: bool, saved: bool, save_error?: string }

add_niagara_module_to_stack

Additive.

Insert an engine module script into a Niagara emitter's particle stack. Loads the module UNiagaraScript and inserts it at the end of the emitter's ParticleSpawn or ParticleUpdate stack via FNiagaraStackGraphUtilities::AddScriptModuleToStack, then recompiles and saves. NOTE: only the module's script-default inputs are applied — per-instance input overrides are out of scope (the response reports added_with_defaults=true). Stateless emitters (no editable graph) return a clean error.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle to modify.
module_script_path string yes Asset path of the module UNiagaraScript (e.g. "/Niagara/Modules/Update/Forces/GravityForce.GravityForce")
script_group string no Optional "spawn" (ParticleSpawnScript) or "update" (ParticleUpdateScript); defaults to "update"

Returns: { system_path: string, emitter_name: string, module_script_path: string, script_group: string, module_node_name: string, added_with_defaults: bool, success: bool, saved: bool, save_error?: string }

add_niagara_renderer

Additive.

Add a new renderer (Sprite / Ribbon / Mesh / Light) to a Niagara emitter. Creates a UNiagaraRendererProperties instance of the requested concrete class (Sprite / Ribbon / Mesh / Light), optionally sets the Material UPROPERTY, and appends it to the emitter's RendererProperties array. Then requests a system compile and saves the asset.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_name string yes Name of the emitter handle (the human-readable name in the system's emitter list).
renderer_type string yes One of "Sprite" / "Ribbon" / "Mesh" / "Light" (case-insensitive).
material_path string no Optional asset path; sets the renderer's Material property. If omitted, the renderer is added with a null material (still a valid empty renderer).

Returns: { system_path: string, emitter_name: string, renderer_type: string, renderer_class: string, renderer_index: int, material_path: string, renderer_count: int, save_error?: string }

add_niagara_simulation_stage

Additive.

Add a simulation stage to a Niagara emitter. Creates a UNiagaraSimulationStageGeneric, configures it with default iteration source (Particles), execute behavior (Always), and GPU dispatch type (OneD), then adds it to the emitter via FVersionedNiagaraEmitterData::AddSimulationStage. The system is saved after modification. The stage's graph is created in a default state; further graph wiring must be completed in the Niagara editor graph.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle.
stage_name string yes Name for the new simulation stage.
iteration_count number no Optional iteration count for the stage; defaults to 1

Returns: { system_path: string, emitter_name: string, stage_name: string, requested_iteration_count: int, total_simulation_stages: int, success: bool }

create_niagara_system

Additive.

Creates (or loads, idempotently) an empty UNiagaraSystem asset and saves it. Uses NewObject + UNiagaraSystemFactoryNew::InitializeSystem (headless-safe); the new system has its system spawn/update scripts wired but no emitters.

Parameter Type Required Description
name string yes Name of the Niagara System asset to create.
package_path string no Target content folder; defaults to /Game/Niagara

Returns: { system_name: string, asset_path: string, created: bool, already_exists?: bool, saved?: bool, save_error?: string, emitter_count: int }

duplicate_niagara_emitter_handle

Additive.

Duplicate an emitter handle of a Niagara System asset under a new name, keeping its enabled state, then save the system. Returns the actual name and id of the copy plus total_emitters; a failed save is not reported in the reply. Find handle names with get_niagara_emitter_handles.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.
source_emitter_name string yes Display name of the emitter handle to copy (case-insensitive), as get_niagara_emitter_handles lists it.
new_emitter_name string no Name for the copy (default "<source_emitter_name>_Copy").

Returns: { system_path: string, source_emitter_name: string, new_emitter_name: string, new_emitter_id: string, is_valid: bool, total_emitters: int }

duplicate_niagara_module_in_stack

Additive.

Duplicate a UNiagaraNodeFunctionCall module in a Niagara emitter's spawn or update graph.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
module_name string yes Display name of the module to duplicate
script_group string no Optional "spawn" or "update"; defaults to "update"
target_index_override number no Optional absolute target index for the duplicate; defaults to one-past-source

Returns: { system_path: string, emitter_name: string, script_group: string, source_module_name: string, new_module_name: string, inserted_index: int, duplicated: bool, saved: bool, save_error?: string }

editor_status

Read-only.

Prove the Unreal editor is alive and TICKING: a no-argument game-thread liveness/health probe, and the first call to make when the MCP bridge goes quiet. It runs on the GAME THREAD via the bridge's command drain, so a reply proves the game thread is pumping -- unlike a transport-only ping, which a wedged editor still answers. After a "Connection reset" use it to tell an editor CRASH (this errors, the reconnect refuses) from a mere tool TIMEOUT (this returns alive=true); call it twice and diff frame_counter to rule out a deadlock, since a frozen game thread replies once but never advances the frame. Also reports whether PIE is running (pie_active / is_simulating) and the open editor world, without starting or stopping anything. Read-only and cheap; safe to call any time.

No parameters.

Returns: { alive: bool, gis_running: bool, exit_requested: bool, is_editor: bool, frame_counter: number, pie_active: bool, is_simulating: bool, editor_world: string, world_context_count: int }

get_engine_info

Read-only.

Read the GEngine object (engine_name, engine_class) and enumerate every world context with its world_name, world_type (Editor/PIE/Game/...) and has_game_instance flag. Use it to see how many worlds exist at once -- in co-op PIE the host and each client are SEPARATE world contexts, so this is how you confirm two PIE worlds are up before reading state that must be checked on both sides. Sibling: get_game_instance_info adds the GameInstance class; editor_status is the cheaper "is the editor alive" probe.

No parameters.

Returns: { engine_name: string, engine_class: string, world_context_count: int, worlds: [object] }

get_engine_settings

Read-only.

Read exactly two live engine knobs: max_fps (UEngine::GetMaxFPS) and screen_percentage (Scalability resolution scale). NOT a general settings dump -- for project/plugin settings use get_project_settings_value or get_engine_ini_value, for scalability buckets get_scalability_levels, and for frame timing get_fps_info / frame_timing.

No parameters.

Returns: { max_fps: number, screen_percentage: number }

get_game_instance_info

Read-only.

Read the live UGameInstance (name, class, object path) plus every engine world context (world_name + world_type: Editor/PIE/Game/EditorPreview/Inactive). A UGameInstance only exists while PIE or a game world is running, so at rest exists=false with empty strings is the NORMAL answer, not an error -- use it to answer "is a game session up, and which GameInstance class did it pick?". Pick this over get_engine_info when you care about the GameInstance itself; get_engine_info answers the same world-context question without it.

No parameters.

Returns: { exists: bool, game_instance_name: string, game_instance_class: string, game_instance_path: string, world_context_count: int, worlds: [object] }

get_niagara_component_matrix

Read-only.

Reads a Matrix (FMatrix4f) override parameter back off a spawned Niagara component — the round-trip reader for set_niagara_component_matrix. UNiagaraComponent exposes no GetNiagaraVariableMatrix, so this reads the value straight out of the component's OverrideParameters store (FNiagaraParameterStore) by looking up the Matrix4 FNiagaraVariable; the override is stored as FMatrix44f. Returns found:false with an empty matrix (never a faked identity) when the variable has no local override on the component.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name to read.

Returns: { actor_name: string, variable_name: string, variable_type: string, found: bool, matrix: [number x 16] }

get_niagara_data_interface_info

Read-only.

Get detail and a UPROPERTY dump for one UNiagaraDataInterface user-parameter binding on a Niagara system.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the user-parameter DI

Returns: { system_path: string, parameter_name: string, data_interface_class: string, data_interface_class_path: string, path_name: string, properties: [{ name, type }], property_count: int }

get_niagara_data_interfaces

Read-only.

List all UNiagaraDataInterface user-parameter bindings on a Niagara system. parameter_name is the user parameter's short name (no "User." prefix), the name the other data interface tools take; object_name and path_name name the data interface object itself; index is its slot in the system's data interface store.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.

Returns: { system_path: string, count: int, data_interfaces: [{ index, parameter_name, object_name, data_interface_class, data_interface_class_path, path_name }] }

get_niagara_effect_type

Read-only.

Get the EffectType configuration of a Niagara system. Reads the UNiagaraEffectType associated with the system and returns its key properties: UpdateFrequency, CullReaction, bAllowCullingForLocalPlayers.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.

Returns: { system_path: string, effect_type_path: string, update_frequency: string, cull_reaction: string, allows_culling: bool }

get_niagara_emitter_data_interfaces

Read-only.

List the data interface bindings on a Niagara emitter (read-only). Reads the FVersionedNiagaraEmitterData::EmitterDependencies array (TArray<FNiagaraDataInterfaceEmitterBinding>). Each binding has a name, type, interface_class, interface_path, and instance_index. Adding or removing data interface bindings on a script requires view-models (FNiagaraStackGraphUtilities AddDataInterface) and is editor-only -- this command lists them but does not mutate them.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.

Returns: { system_path: string, emitter_name: string, data_interface_count: int, data_interfaces: [{ emitter_name, binding_mode }] }

get_niagara_emitter_handle_info

Read-only.

Read one emitter handle of a Niagara System asset, chosen by display name or 0-based index: its id, id name, enabled and valid flags, version GUID and, when it has emitter data, its local-space and deprecated flags. Read-only; list every handle with get_niagara_emitter_handles.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.
emitter_name string no Display name of the handle (case-insensitive); when non-empty it wins over emitter_index.
emitter_index number no 0-based position in the emitter list of the system, used only when emitter_name is absent or empty.

Returns: { system_path: string, emitter_name: string, emitter_id: string, emitter_id_name: string, is_enabled: bool, is_valid: bool, emitter_version: string, is_local_space?: bool, is_deprecated?: bool }

get_niagara_emitter_handles

Read-only.

List every emitter handle of a Niagara System asset with its display name, id GUID, enabled and valid flags, plus emitter_count. Read-only; the names feed the other emitter tools, and get_niagara_emitter_handle_info gives one handle in detail.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.

Returns: { system_path: string, emitter_count: int, emitter_handles: [{ name, id, is_enabled, is_valid }] }

get_niagara_emitter_renderers

Read-only.

List all renderers on a Niagara emitter (read-only). Each entry also dumps the authored renderer UPROPERTYs (base bIsEnabled/SortOrderHint/MotionVectorSetting/bAllowInCullProxies plus the Sprite/Mesh-specific fields present on the concrete class) and, for Mesh renderers, the assigned static-mesh slots — so set_niagara_renderer_properties / set_niagara_mesh_renderer_mesh round-trip.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.

Returns: { system_path: string, emitter_name: string, renderer_count: int, renderers: [{ index, class, display_name, material_path, properties:{...}, meshes?:[{ slot, mesh_path }] }] }

get_niagara_emitter_runtime_summary

Read-only.

Flat readback of a Niagara emitter's runtime knobs and counts.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.

Returns: { system_path: string, emitter_name: string, sim_target: string, bounds_mode: string, bounds_min: string, bounds_max: string, allocation_mode: string, pre_allocation_count: int, max_gpu_particles: int, local_space: bool, deterministic: bool, requires_persistent_ids: bool, update_module_count: int, spawn_module_count: int, emitter_spawn_module_count: int, emitter_update_module_count: int, renderer_count: int, event_handler_count: int, simulation_stage_count: int }

get_niagara_emitter_sim_target

Read-only.

Get the simulation target configuration of a Niagara emitter. Reads SimTarget, bLocalSpace and bDeterministic from the emitter's FVersionedNiagaraEmitterData.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_name string yes Display name of the emitter handle.

Returns: { system_path: string, emitter_name: string, sim_target: string, is_local_space: bool, is_deterministic: bool }

get_niagara_event_handlers

Read-only.

List a Niagara emitter's event handlers and their properties. Reads FVersionedNiagaraEmitterData::GetEventHandlers(); each entry reports its usage_id (the remove key), source_event_name, execution_mode, spawn/event counts and source_emitter_id.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle within the system.

Returns: { system_path: string, emitter_name: string, event_handler_count: int, event_handlers: [{usage_id, source_event_name, execution_mode, spawn_number, max_events_per_frame, min_spawn_number, random_spawn_number, source_emitter_id, has_script}] }

get_niagara_module_info

Read-only.

Read detail for a single UNiagaraNodeFunctionCall module in a Niagara emitter's spawn or update graph.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
module_name string yes Display name of the module function-call node
script_group string no Optional "spawn" or "update"; defaults to "update"

Returns: { system_path: string, emitter_name: string, script_group: string, module_name: string, node_guid: string, stack_index: int, total_modules_in_stack: int, function_script?: string, function_script_class?: string, is_enabled?: bool, input_pin_count: int, output_pin_count: int, is_deprecated: bool }

get_niagara_module_input

Read-only.

Read a Niagara module input override from the rapid-iteration store. Locates the module function-call node and the named input, reports the input's real type, and reads back any rapid-iteration override currently set for it. found=false means no override exists yet (the module is using its script default); in that case 'value' is omitted.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle.
module_node_name string yes The module function-call node name.
input_name string yes Leaf name of the module input (e.g. "Drag").

Returns: { system_path: string, emitter_name: string, module_node_name: string, input_name: string, ri_param_name: string, value_type: string, found: bool, value?: number | [number, number, number] | [number, number, number, number], success: bool }

get_niagara_module_stack

Read-only.

Read BOTH the spawn AND update module stacks of a Niagara emitter in one call (read-only). Runs the same export-safe enumeration as list_niagara_modules twice, returning the modules grouped as spawn:[...] and update:[...] (each entry also carries its own script_group tag). Honest-empty arrays per group, with a spawn_note/update_note if a graph could not be resolved.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.

Returns: { system_path: string, emitter_name: string, spawn: [{...}], update: [{...}], spawn_module_count: int, update_module_count: int, total_modules_in_stack: int, spawn_note?: string, update_note?: string }

get_niagara_renderer_info

Read-only.

Dump the full property set of a specific renderer instance owned by a system emitter. Resolves the system via path, the emitter via name (or handle_index), and the renderer via index — then runs FJsonObjectConverter::UStructToJsonObject on the renderer to produce a flat property map. get_niagara_emitter_renderers lists every renderer; this cmd returns the full UPROPERTY surface of one renderer.

Parameter Type Required Description
system_path string yes Content path to the UNiagaraSystem asset.
emitter_name string yes Name of the emitter handle (preferred) or its FName.
renderer_index number yes 0-based index into FVersionedNiagaraEmitterData::RendererProperties.
handle_index number no Optional fallback when multiple emitters share a name (0-based).

Returns: { system_path, emitter_name, renderer_index, renderer_class, renderer_class_path, properties: {...} }

get_niagara_scalability_settings

Read-only.

Get the scalability configuration of a Niagara system. Reads scalability settings from the system's UNiagaraEffectType: MaxDistance, MaxInstances (system-level), ScaleSpawnCount (emitter-level), and whether distance culling is active.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.

Returns: { system_path: string, effect_type_path: string, has_scalability_settings: bool, max_distance: number, max_instances: int, scale_spawn_count: number, distance_culling_enabled: bool }

get_niagara_simulation_stages

Read-only.

Read the simulation stages of a Niagara emitter (read-only). Same enumeration as list_niagara_simulation_stages, but accepts an OPTIONAL stage_index (preferred) or stage_name to return just the matching stage; with no identifier it returns the full array. Each entry reports index, stage_name, class, enabled, and (for UNiagaraSimulationStageGeneric) iteration_source. Honest-empty when the emitter has no stages or the filter matches nothing.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
stage_index number no Optional 0-based index of a single stage to return.
stage_name string no Optional SimulationStageName to match if stage_index is not supplied.

Returns: { system_path: string, emitter_name: string, simulation_stage_count: int, total_simulation_stages: int, simulation_stages: [{ index, stage_name, class, enabled, iteration_source? }] }

get_niagara_system_info

Read-only.

Reads metadata for a UNiagaraSystem: emitter count, warmup time and exposed user parameters.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. /Game/Niagara/NS_Example or /Game/Niagara/NS_Example.NS_Example)

Returns: { system_name: string, system_path: string, emitter_count: int, num_user_parameters: int, warmup_time: number, user_parameters: [{ name, type }] }

get_niagara_system_properties

Read-only.

Read the render/system flags + fixed bounds of a UNiagaraSystem asset via reflection (GetPropertyValue_InContainer + GetFixedBounds). Read-only; no recompile.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.

Returns: { system_path, cast_shadow, override_cast_shadow, receives_decals, override_receives_decals, render_custom_depth, override_render_custom_depth, custom_depth_stencil_value, override_custom_depth_stencil_value, translucency_sort_priority, override_translucency_sort_priority, translucency_sort_distance_offset, override_translucency_sort_distance_offset, support_large_world_coordinates, require_current_frame_data, b_fixed_bounds, fixed_bounds:{min,max}, fixed_bounds_valid }

get_niagara_system_warmup_time

Read-only.

Read the warmup and determinism settings of a Niagara System asset: warmup_time in seconds, warmup_tick_count, warmup_tick_delta, needs_warmup and deterministic. Read-only; change them with set_niagara_system_warmup_time, set_niagara_system_warmup_tick_count, set_niagara_system_warmup_tick_delta and set_niagara_system_deterministic.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.

Returns: { system_path: string, warmup_time: number, warmup_tick_count: int, warmup_tick_delta: number, needs_warmup: bool, deterministic: bool }

get_niagara_user_parameter

Read-only.

Read a user-exposed parameter's current value from a Niagara System's exposed store. Resolves the parameter by short name (no "User." prefix) and the supplied type token, reads the POD value back. Round-trip companion to set_niagara_user_parameter.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes User parameter name (without the "User." prefix).
type string no Type token: Float|Vector|Vec2|Vec4|Color|Bool|Int (case-insensitive); defaults to Float

Returns: { system_path: string, parameter_name: string, parameter_type: string, found: bool, value_read_back?: number|bool|[number...] }

list_niagara_data_interface_classes

Read-only.

Enumerate every concrete UNiagaraDataInterface subclass registered in this process via TObjectIterator. Skips Abstract (those are base classes only). Used to discover what data-interface class strings are valid for add_niagara_data_interface.

No parameters.

Returns: { count: int, classes: [{class_name, class_path, display_name, abstract, class_flags}] }

list_niagara_modules

Read-only.

List the module function-call nodes on ONE stack of a Niagara emitter (read-only). Resolves the emitter's spawn OR update group graph (script_group, default "update") via the export-safe ResolveEmitterOutputNode + UNiagaraGraph::GetNodesOfClass path, then reports each UNiagaraNodeFunctionCall: index, module_name (GetFunctionName), node_guid, function_script(+class), is_enabled (IsNodeEnabled), is_deprecated, input/output pin counts. Honest-empty modules:[] when the stack has no modules or the graph is not resolvable (a note is returned).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
script_group string no Optional "spawn" or "update"; defaults to "update".

Returns: { system_path: string, emitter_name: string, script_group: string, module_count: int, total_modules_in_stack: int, modules: [{ index, script_group, module_name, node_guid, function_script?, function_script_class?, is_enabled, is_deprecated, input_pin_count, output_pin_count, total_modules_in_stack }], note?: string }

list_niagara_renderer_classes

Read-only.

Enumerate every concrete UNiagaraRendererProperties subclass registered in this process via TObjectIterator. Skips Abstract (those are base classes only). Used to discover what renderer_class strings are valid for add_niagara_renderer.

No parameters.

Returns: { count: int, classes: [{class_name, class_path, display_name, abstract, class_flags}] }

list_niagara_simulation_stages

Read-only.

List all simulation stages on a Niagara emitter (read-only). Resolves the system by path and the emitter by name, then enumerates FVersionedNiagaraEmitterData::GetSimulationStages(). Each entry reports index, stage_name (SimulationStageName), class, enabled, and (for UNiagaraSimulationStageGeneric stages) iteration_source. Honest-empty: returns simulation_stages:[] / simulation_stage_count:0 when the emitter has no stages.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.

Returns: { system_path: string, emitter_name: string, simulation_stage_count: int, simulation_stages: [{ index, stage_name, class, enabled, iteration_source? }] }

move_niagara_simulation_stage

Destructive, idempotent.

Reorder a Niagara simulation stage on its emitter's stage list by moving it to a target index. Resolves the stage on FVersionedNiagaraEmitterData::GetSimulationStages() (stage_index or stage_name), validates target_index is in range, then calls UNiagaraEmitter::MoveSimulationStageToIndex with the emitter version GUID, requests a system compile and saves the asset. Idempotent: an in-position move reports already_at_target:true with the live before/after indices. NiagaraEmitter.h (NIAGARA_API).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle owning the stage.
target_index number yes Required 0-based target index the stage should occupy after the move (must be in [0, total_simulation_stages)).
stage_index number no Optional 0-based index into the emitter's simulation stages; takes precedence over stage_name when both are supplied.
stage_name string no Optional SimulationStageName to match if stage_index is not supplied.

Returns: { system_path, emitter_name, stage_index, stage_name, stage_class, target_index, moved, already_at_target, before_index, after_index, total_simulation_stages, saved, save_error? }

remove_niagara_data_interface

Destructive.

Remove a UNiagaraDataInterface user-parameter binding from a Niagara system by name, inside an undo transaction, request a recompile and save the system; success requires the save. A name with no user parameter, or a user parameter that is not a data interface, is an error and nothing is changed.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the user-parameter to remove (no "User." prefix)

Returns: { system_path: string, parameter_name: string, data_interface_class: string, removed: bool, saved: bool, save_error?: string }

remove_niagara_emitter_handle

Destructive.

Remove an emitter handle from a Niagara system by name or index.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string no Optional display name of the emitter handle to remove
emitter_index number no Optional zero-based index; used if emitter_name not provided

Returns: { system_path: string, removed_emitter_name: string, removed_emitter_id: string, emitters_before: int, emitters_after: int, removed: bool }

remove_niagara_event_handler

Destructive, idempotent.

Remove an event handler from a Niagara emitter by its usage_id. Calls UNiagaraEmitter::RemoveEventHandlerByUsageId. Idempotent: if no handler with that usage_id exists it reports already_removed without error. The system is saved after a removal.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle within the system.
usage_id string yes The handler's usage_id (as returned by add_niagara_event_handler / get_niagara_event_handlers).

Returns: { system_path: string, emitter_name: string, usage_id: string, already_removed: bool, removed: bool, event_handler_count: int, saved: bool, save_error?: string }

remove_niagara_module_from_stack

Destructive.

Remove a UNiagaraNodeFunctionCall module from a Niagara emitter's spawn or update graph.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
module_name string yes Display name of the module function-call node to remove
script_group string no Optional "spawn" or "update"; defaults to "update"

Returns: { system_path: string, emitter_name: string, script_group: string, module_name: string, removed: bool, saved: bool, save_error?: string }

remove_niagara_renderer

Destructive.

Remove a renderer from a Niagara emitter by index. Validates that renderer_index is in range, removes from the emitter's RendererProperties array, requests a system compile and saves the asset.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
renderer_index number yes 0-based index into the emitter's renderers list (use get_niagara_emitter_renderers to find the index)

Returns: { system_path: string, emitter_name: string, removed_renderer_index: int, removed_renderer_class: string, renderer_count_after: int, save_error?: string }

remove_niagara_simulation_stage

Destructive, idempotent.

Remove a Niagara simulation stage from an emitter's stage list by stage_index or stage_name. Resolves the stage on FVersionedNiagaraEmitterData::GetSimulationStages() (stage_index preferred, stage_name matches SimulationStageName), then calls UNiagaraEmitter::RemoveSimulationStage with the emitter version GUID, requests a system compile and saves the asset. Idempotent: a missing stage reports already_removed:true with the current total_simulation_stages. NiagaraEmitter.h (NIAGARA_API).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle owning the stage.
stage_index number no Optional 0-based index into the emitter's simulation stages; takes precedence over stage_name when both are supplied.
stage_name string no Optional SimulationStageName to match if stage_index is not supplied (matches add_niagara_simulation_stage's name).

Returns: { system_path, emitter_name, stage_index, stage_name, stage_class, removed, already_removed, total_simulation_stages, saved, save_error? }

rename_niagara_emitter_handle

Destructive.

Rename an emitter handle of a Niagara System asset and save the system. The engine sanitizes the name and makes it unique among the emitters of the system, so read new_name and verified (false when the stored name differs from the request); a failed save is not reported.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.
current_name string yes Current display name of the emitter handle (case-insensitive), as get_niagara_emitter_handles lists it.
new_name string yes Requested display name; it may come back sanitized or with a numeric suffix.

Returns: { system_path: string, old_name: string, new_name: string, verified: bool }

reorder_niagara_modules

Destructive.

Move a UNiagaraNodeFunctionCall module to a new index in its Niagara emitter stack (in-place reordering).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
module_name string yes Display name of the module to move
target_index number yes Non-negative target index in the ordered stack
script_group string no Optional "spawn" or "update"; defaults to "update"

Returns: { system_path: string, emitter_name: string, script_group: string, module_name: string, old_index: int, new_index: int, target_index: int, reordered: bool, saved: bool, save_error?: string }

set_niagara_component_bool

Destructive, idempotent.

Sets a bool override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableBool, then reads it back.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
value boolean no Bool value to set.

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: bool }

set_niagara_component_color

Destructive, idempotent.

Sets a LinearColor override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableLinearColor, then reads it back.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
color array no Color value [R, G, B, A] (A defaults to 1.0 if omitted).

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number, number, number, number] }

set_niagara_component_float

Destructive, idempotent.

Sets a float override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor (matched by internal name or editor label) and calls SetVariableFloat, then reads it back.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
value number no Float value to set.

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: number }

set_niagara_component_int

Destructive, idempotent.

Sets an int32 override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableInt, then reads it back via GetNiagaraVariableInt.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
value number no Integer value to set.

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: integer }

set_niagara_component_matrix

Destructive, idempotent.

Sets a Matrix (FMatrix) override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableMatrix with a 4x4 row-major matrix built from 16 floats. UNiagaraComponent does NOT expose GetNiagaraVariableMatrix as public API, so round-trip readback is not available; verified:true means the set call succeeded.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
matrix array no Array of 16 numbers in 4x4 row-major order (M00, M01, ..., M33).

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number x 16] }

set_niagara_component_object

Destructive, idempotent.

Sets an Object (UObject*) override parameter on a spawned Niagara component by loading the UObject at the given object_path. Resolves the UNiagaraComponent on the owner actor and calls SetVariableObject, then reads it back via GetNiagaraVariableObject and returns its GetPathName() as a string.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
object_path string yes Asset path of the UObject to bind (e.g. "/Game/Materials/M_Heat.M_Heat").

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, object_path_read_back: string, object_class_read_back: string }

set_niagara_component_position

Destructive, idempotent.

Sets a Position (FVector) override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariablePosition, then reads it back via GetNiagaraVariablePosition.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
position array no World-space position override as [x, y, z].

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number, number, number] }

set_niagara_component_quat

Destructive, idempotent.

Sets a Quat (FQuat) override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableQuat, then reads it back via GetNiagaraVariableQuat and serialises as 4 floats in (W, X, Y, Z) order.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
w number no W (scalar) component of the quaternion.
x number no X component of the quaternion.
y number no Y component of the quaternion.
z number no Z component of the quaternion.

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number, number, number, number] }

set_niagara_component_vec2

Destructive, idempotent.

Sets a Vec2 (FVector2D) override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableVec2, then reads it back via GetNiagaraVariableVec2.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
x number no X component of the Vec2.
y number no Y component of the Vec2.

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number, number] }

set_niagara_component_vec4

Destructive, idempotent.

Sets a Vec4 (FVector4) override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableVec4, then reads it back via GetNiagaraVariableVec4.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
x number no X component of the Vec4.
y number no Y component of the Vec4.
z number no Z component of the Vec4.
w number no W component of the Vec4.

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number, number, number, number] }

set_niagara_component_vector

Destructive, idempotent.

Sets a Vector3 override parameter on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls SetVariableVec3, then reads it back.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
variable_name string yes Niagara variable name (override is added locally if needed).
vector array no Vector value [X, Y, Z].

Returns: { actor_name: string, variable_name: string, variable_type: string, set: bool, verified: bool, value_read_back: [number, number, number] }

set_niagara_data_interface_array

Destructive, idempotent.

Set the numeric values of an array user-parameter data interface (e.g. ArrayFloat FloatData / int32 array IntData).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the user-parameter array DI (no "User." prefix)
values array yes Array of numbers to store (replaces all existing array contents)
array_property string no Optional array UPROPERTY to set (default "FloatData"; e.g. "IntData" for the int32 array DI)

Returns: { system_path: string, parameter_name: string, array_property: string, element_type: string, count: int, values: [number], set: bool, saved: bool, save_error?: string }

set_niagara_data_interface_asset

Destructive, idempotent.

Points an object property of a user-parameter data interface on a Niagara system at an asset (e.g. the mesh of a StaticMesh DI, the texture of a Texture DI), inside an undo transaction, reads it back, requests a system recompile and saves the system; success requires the read-back and the save. The DI must already exist (add_niagara_data_interface); property_name picks the property, else the first hard object property in reflection order. The asset must load and be of the property's class, else it is an error and nothing is written. For non-asset fields use set_niagara_data_interface_default.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the user-parameter DI to mutate
asset_path string no Asset path of the UObject to assign (must be the right subclass)
property_name string no Optional FObjectProperty name on the DI; defaults to the first FObjectProperty

Returns: { system_path: string, parameter_name: string, property_name: string, asset_path: string, set: bool (the property reads back the asset), saved: bool, save_error?: string }

set_niagara_data_interface_curve

Destructive, idempotent.

Replaces all keys of one FRichCurve property on a curve user-parameter data interface of a Niagara system with the given time/value keys (an empty array clears it), rebuilds the DI's lookup table, requests a recompile and saves the system, inside an undo transaction that records the DI; success requires the save. The DI must already exist (add_niagara_data_interface) and curve_property must name an FRichCurve on it: Curve by default, XCurve/YCurve/ZCurve (WCurve too on Vector4) on vector curve DIs, RedCurve/GreenCurve/BlueCurve/AlphaCurve on color curve DIs. For array DIs use set_niagara_data_interface_array.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the user-parameter curve DI (no "User." prefix)
keys array yes Array of { time: number, value: number } keys to set (replaces all existing keys on the channel)
curve_property string no Optional FRichCurve UPROPERTY to author (default "Curve"; e.g. "RedCurve"/"XCurve" on Color/Vector curve DIs)

Returns: { system_path: string, parameter_name: string, curve_property: string, key_count: int, keys: [{time,value}], set: bool, saved: bool, save_error?: string }

set_niagara_data_interface_default

Destructive, idempotent.

Writes one property of a user-parameter data interface on a Niagara system from text parsed by the property's ImportText, so any type it accepts works ("1.5", "(X=1,Y=2,Z=3)", "(R=1,G=0,B=0,A=1)", an enum name), inside an undo transaction, then requests a system recompile and saves the system; success requires the save. A missing DI or property, or text that does not parse, is an error and the DI is left untouched. value echoes the request; value_read_back is the stored value exported as text. List the DI's properties with get_niagara_data_interface_info; for asset references use set_niagara_data_interface_asset.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes Short name of the user-parameter DI to mutate
property_name string yes Name of the FProperty on the DI to set
value string yes String representation of the value (parsed by FProperty::ImportText_Direct)

Returns: { system_path: string, parameter_name: string, property_name: string, value: string, value_read_back: string, set: bool, saved: bool, save_error?: string }

set_niagara_decal_renderer_material

Destructive, idempotent.

Assign a material to the Decal renderer at renderer_index of one emitter in a Niagara System asset and save the system; a failed save returns success false. Returns the previous and new material paths and changed. For sprite, ribbon or mesh renderers use set_niagara_renderer_material.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/Niagara/NS_Example"; the call fails without it.
emitter_name string yes Display name of the emitter handle that owns the renderer (case-insensitive); the call fails without it.
renderer_index number yes 0-based index in the renderer list of the emitter, in get_niagara_emitter_renderers order; that renderer must be a Decal renderer. The call fails without it.
material_path string yes Object path of the UMaterialInterface to assign, e.g. "/Game/Decals/M_Blood.M_Blood".

Returns: { system_path, emitter_name, renderer_index, previous_material_path, new_material_path, changed, saved }

set_niagara_effect_type

Destructive, idempotent.

Assign an EffectType asset to a Niagara system. Loads the UNiagaraEffectType from the given path and calls UNiagaraSystem::SetEffectType. The system is saved after modification.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
effect_type_path string yes Asset path of the UNiagaraEffectType to assign.

Returns: { system_path: string, effect_type_path: string, success: bool }

set_niagara_emitter_allocation_mode

Destructive, idempotent.

Set the EParticleAllocationMode (and optional PreAllocationCount) on a Niagara emitter's FVersionedNiagaraEmitterData.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
allocation_mode string yes One of "AutomaticEstimate", "ManualEstimate", or "FixedCount" (case-insensitive; "Automatic" and "Manual" and "Fixed" also accepted)
pre_allocation_count number no Optional int; only meaningful when not AutomaticEstimate

Returns: { system_path: string, emitter_name: string, allocation_mode: string, pre_allocation_count: int, applied: bool, saved: bool, save_error?: string }

set_niagara_emitter_bounds

Destructive, idempotent.

Set the CalculateBoundsMode and FixedBounds on a Niagara emitter's FVersionedNiagaraEmitterData.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
bounds_mode string no One of "Dynamic", "Fixed", or "Programmable"; defaults to "Fixed"
bounds_min string no Optional [x, y, z] string (FVector) for the FixedBounds minimum
bounds_max string no Optional [x, y, z] string (FVector) for the FixedBounds maximum

Returns: { system_path: string, emitter_name: string, bounds_mode: string, bounds_min: string, bounds_max: string, applied: bool, saved: bool, save_error?: string }

set_niagara_emitter_enabled

Destructive, idempotent.

Enable or disable an emitter handle on a Niagara system.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle.
enabled boolean no Optional bool; defaults to true

Returns: { system_path: string, emitter_name: string, enabled: bool, state_changed: bool, verified: bool, is_enabled_read_back: bool }

set_niagara_emitter_local_space

Destructive, idempotent.

Set whether one emitter of a Niagara System asset simulates in local space (bLocalSpace on its emitter data), then save the system. Returns local_space as read back, applied and saved (with save_error); the reply stays success even when the save fails, so check saved.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.
emitter_name string yes Display name of the emitter handle (case-insensitive).
local_space boolean yes true to simulate the particles of the emitter in its local space, false for world space; the call fails without it.

Returns: { system_path: string, emitter_name: string, local_space: bool, applied: bool, saved: bool, save_error?: string }

set_niagara_emitter_max_gpu_particles

Destructive, idempotent.

Set the MaxGPUParticlesSpawnPerFrame override on a Niagara emitter (only effective when SimTarget is GPUComputeSim).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
max_gpu_particles number no Non-negative integer

Returns: { system_path: string, emitter_name: string, sim_target: string, max_gpu_particles: int, effective_for_current_sim: bool, applied: bool, saved: bool, save_error?: string }

set_niagara_emitter_requires_persistent_ids

Destructive, idempotent.

Toggle bRequiresPersistentIDs on a Niagara emitter (stable Particles.ID across frames; small perf cost).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
requires_persistent_ids boolean no Boolean to assign

Returns: { system_path: string, emitter_name: string, requires_persistent_ids: bool, applied: bool, saved: bool, save_error?: string }

set_niagara_emitter_sim_target

Destructive, idempotent.

Configure the simulation target of a Niagara emitter. Sets SimTarget, and optionally bLocalSpace and bDeterministic, on the emitter's FVersionedNiagaraEmitterData. The system is saved after modification.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Display name of the emitter handle.
sim_target string yes Target type — "CPUSim" or "GPUComputeSim".
local_space boolean no Optional bool override for bLocalSpace
deterministic boolean no Optional bool override for bDeterminism

Returns: { system_path: string, emitter_name: string, sim_target: string, success: bool }

set_niagara_emitter_template_description

Destructive, idempotent.

Set the TemplateAssetDescription text of a standalone Niagara Emitter asset (not an emitter inside a system) and save the asset; a failed save returns success false. Returns old_description and new_description; an empty string clears the text.

Parameter Type Required Description
emitter_asset_path string yes Asset path of the UNiagaraEmitter, e.g. "/Game/FX/NE_Sparks" (an emitter asset, not a system path).
description string yes New description text, stored as FText; an empty string clears it.

Returns: { emitter_asset_path: string, old_description: string, new_description: string, applied: bool, saved: bool, save_error?: string }

set_niagara_mesh_renderer_mesh

Destructive, idempotent.

Assign a static mesh into a Niagara Mesh renderer's Meshes[] slot. Resolves (or grows the array to) the slot index, loads the UStaticMesh, and sets the slot's inner .Mesh via reflection on the FNiagaraMeshRendererMeshProperties element. Then requests a system compile and saves. add_niagara_renderer type=Mesh leaves Meshes empty (renders nothing); this is the command that makes a Mesh renderer actually draw. Idempotent: re-assigning the same mesh to the same slot does not grow the array.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
renderer_index number yes 0-based index of the Mesh renderer (use get_niagara_emitter_renderers).
mesh_path string yes Asset path of the UStaticMesh to assign (e.g. "/Engine/BasicShapes/Cube").
slot number yes Optional 0-based slot index into Meshes[] (default 0). The array is grown with default elements up to this index if needed.

Returns: { system_path, emitter_name, renderer_index, renderer_class, slot, mesh_path, mesh_count, already_assigned: bool, save_error? }

set_niagara_module_enabled

Destructive, idempotent.

Enable or disable a UNiagaraNodeFunctionCall module in a Niagara emitter's spawn or update graph.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
module_name string yes Display name of the module to toggle
enabled boolean no Optional bool; defaults to true
script_group string no Optional "spawn" or "update"; defaults to "update"

Returns: { system_path: string, emitter_name: string, script_group: string, module_name: string, previous_enabled?: bool, enabled: bool, saved: bool, save_error?: string }

set_niagara_module_input

Destructive, idempotent.

Override a Niagara module input by writing the rapid-iteration store. Locates the module function-call node (by its module_node_name, as returned by add_niagara_module_to_stack) on the emitter's spawn or update stack, matches the input by its leaf name, and writes the value into the owning group script's RapidIterationParameters store. The system is recompiled and saved. HONEST GATE: bool / enum / data-interface / object inputs are not rapid-iteration eligible and return a clean error ("override of <type> inputs requires the linked-value path, not supported headless"). The packed value_type must also match the input's actual type or a clean error is returned.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
emitter_name string yes Display name of the emitter handle.
module_node_name string yes The module function-call node name (from add_niagara_module_to_stack's module_node_name).
input_name string yes Leaf name of the module input (e.g. "Drag" for "Module.Drag").
value_type string no One of "float", "int", "vector", or "color"; defaults to "float"
value any no For float/int: scalar number. For vector: an [x, y, z] list. For color: an [r, g, b, a] list.

Returns: { system_path: string, emitter_name: string, module_node_name: string, input_name: string, value_type: string, ri_param_name: string, verified: bool, success: bool, saved: bool, save_error?: string }

set_niagara_renderer_material

Destructive, idempotent.

Set the Material UPROPERTY on a Niagara renderer (Sprite/Ribbon/Mesh). Loads the material, sets it on the renderer's public Material field, requests a system compile and saves. Reads back to verify the material path is now bound.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
renderer_index number yes 0-based index of the renderer (use get_niagara_emitter_renderers to find the index)
material_path string yes Asset path of the UMaterialInterface to assign.

Returns: { system_path: string, emitter_name: string, renderer_index: int, renderer_class: string, material_path: string, material_path_read_back: string, save_error?: string }

set_niagara_renderer_properties

Destructive, idempotent.

Author renderer UPROPERTYs on a Niagara renderer (Sprite/Mesh/Ribbon/Light/Decal) generically by reflection. Writes only the supplied fields onto the LIVE concrete renderer via MergeJsonWithClamp (FJsonObjectConverter + ClampMin/Max meta), then requests a system compile and saves. Enum writes (alignment/facing_mode/sort_mode/motion_vector_setting/decal_source_mode) also fire PostEditChangeProperty so derived state updates. Light/Decal scalar fields (radius_scale, affects_translucency, color_add, decal_screen_size_fade, decal_source_mode, ...) are covered here — use set_niagara_decal_renderer_material for the decal Material (object-ref). Keys not present on the concrete renderer class are reported in not_applicable (honest, not silently swallowed). Idempotent. Covers base renderer_enabled for free.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle.
renderer_index number yes 0-based index of the renderer (use get_niagara_emitter_renderers).
enabled string no Optional bool: base bIsEnabled (also accepted as renderer_enabled).
sort_order_hint string no Optional int: base SortOrderHint.
motion_vector_setting string no Optional enum name: base MotionVectorSetting (e.g. "AutoDetect"/"Precise"/"Disable").
allow_in_cull_proxies string no Optional bool: base bAllowInCullProxies.
alignment string no Optional enum name (Sprite): Alignment (e.g. "Unaligned"/"VelocityAligned"/"CustomAlignment"/"Automatic").
facing_mode string no Optional enum name (Sprite ENiagaraSpriteFacingMode or Mesh ENiagaraMeshFacingMode, resolved by class): FacingMode.
sort_mode string no Optional enum name (Sprite/Mesh): SortMode (e.g. "None"/"ViewDepth"/"ViewDistance"/"CustomAscending"/"CustomDescending").
sub_image_size string no Optional [x,y] or {X,Y} (Sprite/Mesh): SubImageSize.
macro_uv_radius string no Optional float (Sprite): MacroUVRadius.
pivot_in_uv_space string no Optional [x,y] or {X,Y} (Sprite): PivotInUVSpace.
cast_shadows string no Optional bool (Sprite): bCastShadows.
renderer_visibility string no Optional int (Sprite): RendererVisibility tag value.
override_materials string no Optional bool (Mesh): bOverrideMaterials.
mesh_bounds_scale string no Optional [x,y,z] or {X,Y,Z} (Mesh): MeshBoundsScale.
locked_axis string no Optional [x,y,z] or {X,Y,Z} (Mesh): LockedAxis.
use_inverse_squared_falloff string no Optional bool (Light): bUseInverseSquaredFalloff.
affects_translucency string no Optional bool (Light): bAffectsTranslucency.
allow_mega_lights string no Optional bool (Light): bAllowMegaLights.
mega_lights_cast_shadows string no Optional bool (Light): bMegaLightsCastShadows.
alpha_scales_brightness string no Optional bool (Light): bAlphaScalesBrightness.
override_inverse_exposure_blend string no Optional bool (Light): bOverrideInverseExposureBlend.
radius_scale string no Optional float (Light, ClampMin=0): RadiusScale.
default_exponent string no Optional float (Light, ClampMin=0): DefaultExponent (used when use_inverse_squared_falloff=false).
specular_scale string no Optional float (Light, ClampMin=0): SpecularScale.
diffuse_scale string no Optional float (Light, ClampMin=0): DiffuseScale.
color_add string no Optional {x,y,z} or [x,y,z] (Light): ColorAdd (FVector3f RGB shift).
inverse_exposure_blend string no Optional float (Light): InverseExposureBlend.
decal_screen_size_fade string no Optional float (Decal): DecalScreenSizeFade.
decal_source_mode string no Optional enum name/int (Decal): SourceMode ("Particles"/"Emitter"); fires PostEditChangeProperty so UpdateSourceModeDerivates runs.

Returns: { system_path, emitter_name, renderer_index, renderer_class, applied:[prop names], not_applicable:[input keys], post_edit_fired: bool, properties:{round-trip dump}, save_error? }

set_niagara_simulation_stage_properties

Destructive, idempotent.

Author the settable enum/bool/FName/FIntPoint UPROPERTYs on a UNiagaraSimulationStageGeneric (the spawn-without-setter companion to add_niagara_simulation_stage). Resolves the stage on an emitter by stage_index or stage_name, writes only the supplied fields by reflection (MergeJsonWithClamp), sets bEnabled via SetEnabled, fires PostEditChangeProperty for enum writes, then requests a system compile and saves. Idempotent. HONEST GATE: the binding-valued fields num_iterations/element_count_x|y|z/data_interface are FNiagaraParameterBindingWithValue / binding structs that ImportText cannot author here -- any such key is reported in not_supported, never faked (iteration count is authored on the add path).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
emitter_name string yes Name of the emitter handle owning the stage.
stage_name string yes Optional SimulationStageName to match if stage_index is not supplied.
stage_index number no Optional 0-based index into the emitter's simulation stages (use add_niagara_simulation_stage / get_niagara_emitter_runtime_summary); takes precedence over stage_name
name string no Optional FName: SimulationStageName (renames the stage; also accepted as simulation_stage_name).
enabled boolean no Optional bool: base bEnabled (written via SetEnabled).
iteration_source string no Optional enum name: IterationSource (Particles|DataInterface|DirectSet).
execute_behavior string no Optional enum name: ExecuteBehavior (Always|OnSimulationReset|NotOnSimulationReset).
disable_partial_particle_update string no Optional bool: bDisablePartialParticleUpdate.
particle_iteration_state_enabled string no Optional bool: bParticleIterationStateEnabled.
particle_iteration_state_range string no Optional {X,Y} object: ParticleIterationStateRange (FIntPoint; the generic struct path needs the object form, not a [x,y] array).
gpu_dispatch_force_linear string no Optional bool: bGpuDispatchForceLinear.
direct_dispatch_type string no Optional enum name: DirectDispatchType (OneD|TwoD|ThreeD).
direct_dispatch_element_type string no Optional enum name: DirectDispatchElementType (NumThreads|NumThreadsNoClipping|NumGroups).

Returns: { system_path, emitter_name, stage_index, stage_name, stage_class, applied:[prop names], not_applicable:[keys], not_supported:[binding keys], enabled?: bool, post_edit_fired: bool, save_error? }

set_niagara_system_deterministic

Destructive, idempotent.

Set the bDeterminism UPROPERTY on a Niagara system via reflection.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
deterministic boolean no Boolean to assign to bDeterminism

Returns: { system_path: string, old_deterministic: bool, new_deterministic: bool, applied: bool, saved: bool }

set_niagara_system_fixed_bounds

Destructive, idempotent.

Sets fixed local-space bounds on a spawned Niagara component. Resolves the UNiagaraComponent on the owner actor and calls UNiagaraComponent::SetSystemFixedBounds(FBox), then reads back via GetSystemFixedBounds.

Parameter Type Required Description
actor_name string yes Owner actor identifier (internal name or editor label).
min array no Local-space bounds minimum [X, Y, Z].
max array no Local-space bounds maximum [X, Y, Z].

Returns: { actor_name: string, applied: bool, bounds_valid: bool, min_read_back: [number, number, number], max_read_back: [number, number, number] }

set_niagara_system_properties

Destructive, idempotent.

Set render/system flags on a UNiagaraSystem asset via raw reflection (no PostEditChangeProperty -> avoids the compile/scalability pipeline). Only the supplied fields are applied; each render override value also sets its bOverride* companion so it actually takes effect on spawned components. Persists via SavePackage and is reopen-clean (no recompile). Idempotent.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System (e.g. "/Game/Niagara/NS_Example").
cast_shadow string no Optional bool: default CastShadow for spawned components (sets bCastShadow + bOverrideCastShadow).
override_cast_shadow string no Optional bool: explicitly set bOverrideCastShadow (auto-set when cast_shadow is given).
receives_decals string no Optional bool: default ReceivesDecals (sets bReceivesDecals + bOverrideReceivesDecals).
override_receives_decals string no Optional bool: explicitly set bOverrideReceivesDecals.
render_custom_depth string no Optional bool: default RenderCustomDepth (sets bRenderCustomDepth + bOverrideRenderCustomDepth).
override_render_custom_depth string no Optional bool: explicitly set bOverrideRenderCustomDepth.
custom_depth_stencil_value string no Optional int: default CustomDepthStencilValue (sets CustomDepthStencilValue + bOverrideCustomDepthStencilValue).
override_custom_depth_stencil_value string no Optional bool: explicitly set bOverrideCustomDepthStencilValue.
translucency_sort_priority string no Optional int: default TranslucencySortPriority (sets it + bOverrideTranslucencySortPriority).
override_translucency_sort_priority string no Optional bool: explicitly set bOverrideTranslucencySortPriority.
translucency_sort_distance_offset string no Optional float: default TranslucencySortDistanceOffset (sets it + bOverrideTranslucencySortDistanceOffset).
override_translucency_sort_distance_offset string no Optional bool: explicitly set bOverrideTranslucencySortDistanceOffset.
support_large_world_coordinates string no Optional bool: bSupportLargeWorldCoordinates.
require_current_frame_data string no Optional bool: bRequireCurrentFrameData.
b_fixed_bounds string no Optional bool: bFixedBounds (enables the system FixedBounds box).
fixed_bounds object no Optional object {min:[x,y,z], max:[x,y,z]}: the system FixedBounds FBox. Partial corners keep the current value.

Returns: { system_path, applied_count, override_applied:[...], <read-back of every field>, fixed_bounds:{min,max}, saved, save_error? }

set_niagara_system_warmup_tick_count

Destructive, idempotent.

Re-resolve the protected UNiagaraSystem::WarmupTickCount from the current WarmupTime/WarmupTickDelta pair.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.

Returns: { system_path: string, old_warmup_tick_count: int, new_warmup_tick_count: int, warmup_time: number, warmup_tick_delta: number, applied: bool, saved: bool }

set_niagara_system_warmup_tick_delta

Destructive, idempotent.

Set the warmup tick delta (seconds per tick) on a Niagara system.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
warmup_tick_delta number no Tick delta in seconds (must be > 0)

Returns: { system_path: string, old_warmup_tick_delta: number, new_warmup_tick_delta: number, applied: bool, saved: bool }

set_niagara_system_warmup_time

Destructive, idempotent.

Set the warmup time in seconds of a Niagara System asset and save it; a failed save returns success false. With a non-zero warmup_tick_delta the engine rounds the time down to a whole number of ticks, so read new_warmup_time and warmup_tick_count back.

Parameter Type Required Description
system_path string yes Niagara System asset path, e.g. "/Game/FX/NS_Fire"; the call fails without it.
warmup_time number yes Warmup time in seconds (>= 0; 0 disables warmup); the call fails without it.

Returns: { system_path: string, old_warmup_time: number, new_warmup_time: number, warmup_tick_count: int, applied: bool, saved: bool }

set_niagara_user_parameter

Destructive, idempotent.

Sets a user-exposed parameter default on a Niagara System's exposed store. Adds the parameter (under the User. namespace) if it does not yet exist, sets the value, then reads it back to verify. Supports float/vector(vec3)/vec2/vec4/color/bool/int. Type is taken from the optional type hint; if omitted, vector key implies Vector and otherwise Float (back-compat). Color is FLinearColor and bool is FNiagaraBool.

Parameter Type Required Description
system_path string yes Asset path of the Niagara System.
parameter_name string yes User parameter name (without the "User." prefix).
type string no Optional type token: Float|Vector|Vec2|Vec4|Color|Bool|Int (case-insensitive). Defaults to Vector if a vector key is present, else Float
value any no Optional float scalar (Float), int (Int) or bool (Bool) value, per the resolved type
vector array no Optional [X, Y, Z] for Vector (also implies type=Vector when type omitted)
vec2 string no Optional [X, Y] for a Vec2 parameter
vec4 string no Optional [X, Y, Z, W] for a Vec4 parameter
color string no Optional [R, G, B, A] (linear) for a Color parameter

Returns: { system_path: string, parameter_name: string, parameter_type: string, value_set: bool, value_read_back?: number|bool|[number...], verified: bool }

spawn_niagara_component

Additive.

Spawns a Niagara System as a persistent UNiagaraComponent in the editor world. Spawns via UNiagaraFunctionLibrary::SpawnSystemAtLocation with bAutoDestroy disabled so the component persists for follow-up parameter calls. The owner actor can later be targeted by either its internal object name (owner_actor_name) or its editor label (owner_actor_label).

Parameter Type Required Description
system_path string yes Asset path of the Niagara System to spawn (e.g. /Game/MyGame/NS_Example)
location array no World location [X, Y, Z].
rotation array no Optional [pitch, yaw, roll]; defaults to identity
actor_label string no Optional desired editor label for the owner actor

Returns: { system_path: string, component_name: string, owner_actor_name: string, owner_actor_label: string, is_registered: bool, is_active: bool, location: [number, number, number] }