Niagara
Every Niagara command in CodeFizz Editor Agent, with parameters and examples.
Every Niagara command in CodeFizz Editor Agent, with parameters and examples.
135 commands. Each shows its parameters and an example, and has a copyable deep link, so you (or an AI agent) can jump straight to one.
validate_niagara_stackScan a Niagara system's full stack for issues (the per-module warnings/errors the editor shows)
Walks the live Niagara stack, system stack plus every emitter stack, every module/entry, and reports all FStackIssue entries (the same warnings/errors shown on modules in the Niagara editor, e.g. unmet module dependencies). Each issue reports scope, module, category, severity (error/warning/info), short + long description, a stable issue_key, whether it is auto_fixable, and its list of fixes. Pass min_severity to filter. The system must be open in the Niagara editor (the command opens it if needed) since stack issues come from the live stack view model.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| min_severity | string | No | Minimum severity to report: error | warning (default) | info (info adds version-upgrade notes) |
| emitter_name | string | No | Only this emitter's stack (System for the system stack) |
| max_results | int | No | Maximum issues listed; counts and truncation cover all |
cfa validate_niagara_stack --system-path /Game/VFX/NS_Fire
cfa validate_niagara_stack --system-path /Game/VFX/NS_Fire --min-severity warningfix_niagara_stack_issueApply a stack issue's fix (the editor's "Fix issue" button), one issue or all auto-fixes
Executes a Niagara stack issue's fix delegate, the same action as clicking "Fix issue" in the editor (e.g. reorder a module before its dependency, add a required module). Target one issue with issue_key (from validate_niagara_stack) or match (a substring of the issue text); choose a specific fix with fix_index (default: the first auto-fix). Or pass all=true to apply every auto-fixable issue in a loop until none remain. Recompiles + saves the system afterward and reports remaining issues.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| all | bool | No | Apply every auto-fixable issue (loop until clean) |
| issue_key | string | No | Exact issue_key from validate_niagara_stack |
| match | string | No | Substring of the issue's short/long description to match |
| fix_index | int | No | Which fix to apply (default: first auto-fix on the issue) |
cfa fix_niagara_stack_issue --system-path /Game/VFX/NS_Fire --all=true
cfa fix_niagara_stack_issue --system-path /Game/VFX/NS_Fire --match "SolveForcesAndVelocity"
cfa fix_niagara_stack_issue --system-path /Game/VFX/NS_Fire --issue-key <key-from-validate>list_niagara_asset_typesList standalone Niagara data/utility asset types creatable via create_niagara_asset
Lists the asset_type values accepted by create_niagara_asset, each with its runtime asset class, availability in this build, and a one-line note. Backed by the engine factory registry (not a hardcoded doc), so it stays truthful across engine versions.
cfa list_niagara_asset_typescreate_niagara_assetCreate a standalone Niagara data/utility asset
Creates a standalone Niagara data/utility asset (parameter collection, parameter collection instance, parameter definitions, effect type, data channel, sim cache, validation rule set) via its engine factory. Run list_niagara_asset_types for the asset_type values. Edit the created asset afterward with the generic describe_object / set_object_property reflection commands. Note: sim_cache is created blank, its data is captured at runtime, not authored here.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_type | string | Yes | Asset type key (see list_niagara_asset_types) |
| asset_path | string | Yes | Content Browser path for the new asset |
| parent | string | No | parameter_collection_instance only: parent parameter collection to bind |
cfa create_niagara_asset --asset-type parameter_collection --asset-path /Game/CFATest/NPC_Wind
cfa create_niagara_asset --asset-type parameter_collection_instance --asset-path /Game/CFATest/NPCI_Wind --parent /Game/CFATest/NPC_Wind.NPC_Wind
cfa create_niagara_asset --asset-type effect_type --asset-path /Game/CFATest/ET_Defaultadd_niagara_parameter_collection_parameterAdd a named parameter (with optional default value) to a parameter collection
Populates a Niagara Parameter Collection (NPC) so it actually drives values: adds a named, typed parameter under the collection's namespace and optionally sets its default on the collection's default instance. Supported types: float, int, bool, vector (vec3), color (linear color). Value format: number for float/int, true/false for bool, {"x":..,"y":..,"z":..} for vector, {"r":..,"g":..,"b":..,"a":..} for color. A value that does not parse, or a name the collection already has, is refused before anything is added. The returned parameter_name is the fully namespaced name to reference from systems/emitters.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_path | string | Yes | Asset path of the parameter collection |
| name | string | Yes | Friendly parameter name (namespace added automatically) |
| type | string | Yes | float | int | bool | vector | color |
| value | json | No | Optional default value (number, or {x,y,z} / {r,g,b,a}) |
cfa add_niagara_parameter_collection_parameter --asset-path /Game/FX/NPC_Wind.NPC_Wind --name Strength --type float --value 2.5
cfa add_niagara_parameter_collection_parameter --asset-path /Game/FX/NPC_Wind.NPC_Wind --name Tint --type color --value '{"r":0.2,"g":0.6,"b":1.0,"a":1.0}'create_niagara_systemCreate a new Niagara particle system
Creates a new Niagara system asset at the given path. Use template to start from a preset (e.g., "empty" for a blank system, or a template name for pre-configured emitters). A Niagara *system* template is duplicated as a whole asset (same as Epic's MCP StaticDuplicateObject path) so inner scratch-pad scripts stay in the new package. Adding another system's emitters instead leaves illegal private FunctionScript refs (e.g. SpinPosition on a Fluids template) and the command now errors instead of saving. Pass a NiagaraFluids system path to clone a finished fluid solver, never rebuild those from empty; tune the clone's User parameters instead. Returns the created asset path.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_path | string | Yes | Content Browser path for the new system |
| template | string | No | Template name: empty, Fountain, etc., or a full engine asset path (e.g. a /NiagaraFluids/... system to clone) |
cfa create_niagara_system --asset-path /Game/VFX/NS_Explosion
cfa create_niagara_system --asset-path /Game/VFX/NS_Fire --template "Fountain"get_niagara_system_infoGet full info about a Niagara system
Returns detailed information about a Niagara system including its emitters, user parameters, system settings, and compilation status. Use include to control what sections are returned (all, emitters, parameters, compilation). Use filter to narrow emitters and parameters by name substring.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| include | string | No | Sections to include: all, emitters, parameters, compilation |
| filter | string | No | Substring filter on emitter and parameter names |
cfa get_niagara_system_info --system-path /Game/VFX/NS_Explosion
cfa get_niagara_system_info --system-path /Game/VFX/NS_Fire --include emitters
cfa get_niagara_system_info --system-path /Game/VFX/NS_Fire --filter Sparklist_niagara_systemsList Niagara system assets
Lists all Niagara system assets under the given path. Use name_filter to narrow results by name substring. Useful for discovering existing systems before creating new ones or for finding systems to modify. Engine content is searchable too: use --path /NiagaraFluids with --name-filter Grid3D (3D water/gas), Grid2D (2D water/gas) or ShallowWater to find the ready-made fluid solver systems to clone (needs the NiagaraFluids plugin enabled).
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | No | Content Browser path to search (/Game for project, /NiagaraFluids for fluid solver templates) |
| name_filter | string | No | Filter systems by name substring |
| max_results | int | No | Maximum number of results |
cfa list_niagara_systems
cfa list_niagara_systems --path /Game/VFX --name-filter "Fire"
cfa list_niagara_systems --path /NiagaraFluids --name-filter Grid3D
cfa list_niagara_systems --max-results 50delete_niagara_systemDelete a Niagara system asset
Deletes a Niagara system asset. Checks for references by default. Set force to true to delete even if other assets reference this system. Use find_references first to understand the impact of deletion.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the system to delete |
| force | bool | No | Delete even if referenced by other assets |
cfa delete_niagara_system --system-path /Game/VFX/NS_OldEffect
cfa delete_niagara_system --system-path /Game/VFX/NS_Unused --forcecompile_niagara_systemCompile a Niagara system
Triggers compilation of a Niagara system. Compilation resolves all module scripts, validates parameter bindings, and generates GPU compute shaders. Set wait_for_completion to false for async compilation. Returns the full compile state: is_valid, error_count, warning_count, a summary string, per-script statuses, and a messages[] array with every compile event ({script, severity error|warning|display|log, message, short_description}), the same errors and warnings the Niagara editor reports.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the system to compile |
| wait_for_completion | bool | No | Wait for compilation to finish |
| force | bool | No | Force a recompile of an up-to-date system (ForceGraphToRecompileOnNextCheck). Note: Niagara serves unchanged content from its content-addressed DDC, so fresh messages only appear after a real graph change; the messages[] otherwise reflect the last actual translation |
cfa compile_niagara_system --system-path /Game/VFX/NS_Explosion
cfa compile_niagara_system --system-path /Game/VFX/NS_Fire --wait-for-completion=falsecompile_niagara_scriptCompile a standalone Niagara script (module / dynamic input / function)
Compiles a STANDALONE Niagara script asset, the standalone script editor's "Compile" button (UNiagaraScript::RequestCompile). Standalone module/dynamic-input/function scripts do not self-compile as you author them (they compile inside the system that uses them), so their editor shows 'compile status unknown' until you compile them. This runs a real, synchronous compile and returns the full state: is_valid, compile_status (up_to_date | up_to_date_with_warnings | error | dirty | unknown), error_count, warning_count, last_op_count (0 means never compiled), and a messages[] array of every compile event ({severity, message, short_description}). Pass script_path to the module/DI/function asset. If the script is OPEN in its editor this drives the editor's own Compile button on the edited copy (so the Stats panel + status update live) and returns editor_open:true, the edit persists to disk on apply_niagara_script; otherwise it compiles and saves the asset directly.
| Parameter | Type | Required | Description |
|---|---|---|---|
| script_path | string | Yes | Asset path of the standalone module / dynamic input / function script |
| force | bool | No | Force a real recompile (skips the DDC cache) so messages[] reflect this graph; false serves an up-to-date result from cache |
cfa compile_niagara_script --script-path /Game/VFX/Modules/NM_SineTornado
cfa compile_niagara_script --script-path /Game/VFX/DI/DI_Jitter --force=falseapply_niagara_scriptApply a standalone Niagara script's edits to the asset (editor Apply button)
Replicates the standalone script editor's "Apply" button (FNiagaraScriptToolkit::OnApply) for a script open in its own editor: it compiles the transient edited copy, commits it onto the on-disk asset, refreshes every script that references it, and saves. Use after build_niagara_graph / compile_niagara_script when the script is open in the editor so the change persists exactly as a user clicking Apply. Returns editor_open and applied (false when the script isn't open, the asset already holds the edits, or when the edited copy matches the original, i.e. nothing to apply).
| Parameter | Type | Required | Description |
|---|---|---|---|
| script_path | string | Yes | Asset path of the standalone module / dynamic input / function script |
cfa apply_niagara_script --script-path /Game/VFX/DI/DI_Jitterget_niagara_emittersList emitters in a Niagara system
Returns emitters in a Niagara system with their names, indices, enabled states, and summary info (sim target, local_space, determinism, renderer_count). Use filter to narrow results by emitter name substring.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| filter | string | No | Substring filter on emitter names |
cfa get_niagara_emitters --system-path /Game/VFX/NS_Explosion
cfa get_niagara_emitters --system-path /Game/VFX/NS_Fire --filter Sparkcreate_niagara_emitterCreate a standalone Niagara emitter asset
Creates a standalone UNiagaraEmitter asset at the given path via the engine emitter factory. With add_default_modules=true (default) the emitter ships with a sprite renderer plus the standard EmitterState/SpawnRate/SystemLocation/AddVelocity/UpdateAge/Color/Solver modules; set it false for a truly empty emitter. Reuse it in a system with add_niagara_emitter --emitter-path (use --inherit to control parented vs copied).
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_path | string | Yes | Content Browser path for the new emitter |
| add_default_modules | bool | No | Add the default renderer + starter modules (use =false for an empty emitter) |
cfa create_niagara_emitter --asset-path /Game/CFATest/E_Spark
cfa create_niagara_emitter --asset-path /Game/CFATest/E_Blank --add-default-modules=falseadd_niagara_emitterAdd an emitter to a Niagara system
Adds an emitter to a Niagara system. Provide emitter_path to add from an existing emitter asset (template or standalone), or template to add from a built-in template. Use emitter_name to set a custom display name. If neither emitter_path nor template is given, adds an empty emitter. Use inherit to force the new handle to be parented to the source (true, live inheritance) or a standalone copy (false); omit it to use the source emitter's own setting.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the target Niagara system |
| emitter_path | string | No | Asset path of an existing emitter to add (template or standalone) |
| emitter_name | string | No | Display name for the emitter |
| template | string | No | Built-in template name (e.g., Fountain, Sprite) |
| inherit | bool | No | =true parented/inherited handle, =false standalone copy (omit = source's own bIsInheritable) |
| force_add | bool | No | Add even if an emitter with this name already exists (creates a Name001 duplicate). Default false: an existing name is returned as-is (already_existed=true), so re-runs are idempotent |
cfa add_niagara_emitter --system-path /Game/VFX/NS_Fire --template "Fountain" --emitter-name "Sparks"
cfa add_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-path /Game/CFATest/E_Spark.E_Spark --inherit=trueremove_niagara_emitterRemove an emitter from a Niagara system
Removes an emitter from a Niagara system by name. This also removes all modules, renderers, and event handlers associated with the emitter. Use get_niagara_emitters to confirm the exact emitter name before removal.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter to remove |
cfa remove_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-name Sparksset_niagara_emitter_propertySet a property on an emitter
Sets a property on an emitter within a Niagara system. Supported keys: enabled, sim_target (CPUSim/GPUComputeSim), local_space, determinism, bounds_mode, max_particles. Value is JSON-encoded. Set local_space=true for any effect that should play at its actor: a module that writes Particles.Position directly renders at world (0,0,0) in the default world space; local space makes positions relative to the component so the effect follows the actor.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| property | string | Yes | Property key: enabled, sim_target, local_space, determinism, bounds_mode, max_particles |
| value | json | Yes | JSON-encoded property value |
cfa set_niagara_emitter_property --system-path /Game/VFX/NS_Fire --emitter-name Sparks --property sim_target --value '"GPUComputeSim"'
cfa set_niagara_emitter_property --system-path /Game/VFX/NS_Fire --emitter-name Sparks --property local_space --value trueduplicate_niagara_emitterDuplicate an emitter within a system
Creates a copy of an existing emitter within the same Niagara system. The duplicate inherits all modules, renderers, and settings from the source. Optionally provide new_name to rename the copy; otherwise it gets a default suffix.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter to duplicate |
| new_name | string | No | Name for the duplicated emitter |
cfa duplicate_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --new-name "Sparks_Large"reorder_niagara_emitterMove an emitter to a new position
Changes the execution order of an emitter within a Niagara system by moving it to a new index. Emitter order affects rendering draw order (later emitters draw on top) and can affect event handler resolution.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter to move |
| new_index | int | Yes | New zero-based position index |
cfa reorder_niagara_emitter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --new-index 0get_niagara_modulesList modules in an emitter's stack
Returns modules in an emitter's script stack. Filter by script_usage to see only specific stages: EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate, or all. Use filter to narrow by module function name substring. Set include_inputs to also return each module's inputs and values; by default only names, stages and paths are listed.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| script_usage | string | No | |
| include_inputs | bool | No | Also return each module's inputs and values (larger; get_niagara_module_inputs reads one module) |
| filter | string | No | Substring filter on module function names |
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage ParticleUpdate
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Color
cfa get_niagara_modules --system-path /Game/VFX/NS_Fire --emitter-name Sparks --include-inputsadd_niagara_moduleAdd a module to an emitter's stack
Adds a module to an emitter's script stack at the specified stage. Target the emitter with either system_path + emitter_name (an emitter inside a system) OR emitter_path (a standalone UNiagaraEmitter asset). module_path is the asset path of a Niagara module script or scratch pad module. Use list_niagara_modules to discover available modules. Set index to -1 (default) to append at the end, or specify a zero-based position to insert at.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Asset path of the Niagara system (with emitter_name) |
| emitter_name | string | No | Name of the emitter inside the system |
| emitter_path | string | No | Asset path of a standalone emitter (instead of system_path + emitter_name) |
| module_path | string | Yes | Asset path of the module script to add |
| script_usage | string | Yes | |
| index | int | No | Insert position (-1 = append at end) |
| force_add | bool | No | Add even if this exact module is already in the stack. Default false: an already-present module is returned as-is (already_existed=true), so re-runs are idempotent |
cfa add_niagara_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-path /Niagara/Modules/ScaleSpriteSize --script-usage ParticleUpdate
cfa add_niagara_module --emitter-path /Game/CFATest/E_Spark.E_Spark --module-path /Niagara/Modules/Update/Velocity/VortexVelocity.VortexVelocity --script-usage ParticleUpdateremove_niagara_moduleRemove a module from an emitter's stack
Removes a module from an emitter's script stack by name and stage. Use get_niagara_modules to find the exact module name and which script_usage stage it belongs to.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| module_name | string | Yes | Name of the module to remove |
| script_usage | string | Yes |
cfa remove_niagara_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name ScaleSpriteSize --script-usage ParticleUpdateset_niagara_module_enabledEnable or disable a module
Enables or disables a module in an emitter's stack without removing it. Disabled modules are skipped during simulation but their configuration is preserved. Useful for debugging or A/B testing different module setups.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| module_name | string | Yes | Name of the module |
| script_usage | string | Yes | |
| enabled | bool | Yes | True to enable, false to disable |
cfa set_niagara_module_enabled --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Drag --script-usage ParticleUpdate --enabled=false
cfa set_niagara_module_enabled --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Drag --script-usage ParticleUpdate --enabledreorder_niagara_moduleMove a module to a new position in stack
Changes the execution order of a module within its script stage. Module order within a stage determines execution priority (earlier modules run first). Useful for ensuring dependent calculations happen in the correct sequence.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| module_name | string | Yes | Name of the module to move |
| script_usage | string | Yes | |
| new_index | int | Yes | New zero-based position index |
cfa reorder_niagara_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Drag --script-usage ParticleUpdate --new-index 0get_niagara_module_inputsGet input parameters for a module (keyword + top-N)
Returns the reveal-aware input parameters for a specific module in an emitter's stack, including the conditionally-revealed value inputs (Cylinder Radius, SpawnRate, Lifetime...) that the summary get_niagara_modules omits, with names, types and current values. input_filter narrows by keyword and ranks results by relevance (exact > prefix > substring); max_results caps the count (0 = all). Use both for a precise, token-light lookup like 'the radius input on ShapeLocation, top 5'. Response includes total_matched and truncated. Inputs the stack hides (a static switch or visibility condition leaves them out) are skipped and counted in hidden; include_hidden lists them. An inline on/off checkbox shows as its input's enabled.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| module_name | string | Yes | Name of the module |
| script_usage | string | Yes | |
| input_filter | string | No | Keyword to filter + rank inputs by relevance (exact > prefix > substring) |
| max_results | int | No | Cap returned inputs (0 = all). Pairs with input_filter for top-N. |
| include_values | bool | No | Attach each input's resolved current_value via the stack reader (opens the system's stack). Set false for a lighter graph-only report. |
| include_hidden | bool | No | Also list the inputs the stack hides right now |
cfa get_niagara_module_inputs --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name AddVelocity --script-usage ParticleSpawn
cfa get_niagara_module_inputs --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name ShapeLocation --script-usage ParticleSpawn --input-filter radius --max-results 5set_niagara_module_inputSet an input value on a module
Sets a static input value on a module. The value is JSON-encoded and must match the parameter type (float for scalars, array for vectors, object for structs). Use get_niagara_module_inputs to discover available inputs and their types. For dynamic values (random ranges, curves, linked parameters), use set_niagara_dynamic_input instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Asset path of the Niagara system (with emitter_name) |
| emitter_name | string | No | Name of the emitter inside the system |
| emitter_path | string | No | Asset path of a standalone emitter (instead of system_path + emitter_name) |
| module_name | string | Yes | Name of the module |
| input_name | string | Yes | Name of the input parameter |
| value | json | Yes | JSON-encoded value matching the parameter type |
| script_usage | string | Yes |
cfa set_niagara_module_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnRate --input-name SpawnRate --value 500 --script-usage EmitterUpdate
cfa set_niagara_module_input --emitter-path /Game/CFATest/E_Spark.E_Spark --module-name VortexVelocity --input-name "Velocity Amount" --value 400 --script-usage ParticleUpdateset_niagara_dynamic_inputSet a dynamic input on a module
Assigns a dynamic input to a module parameter. Dynamic inputs provide runtime-computed values. The 'script' type attaches ANY of the engine/project dynamic-input scripts (there are hundreds: Random Range Float, Random Jitter Float, Remap Range, Select Float from Array, Waveform, etc.) by its asset path via dynamic_input_script_path, discover paths with resolve_niagara_built_in_dynamic_input or search_niagara_functions --usage dynamic_input. Convenience shortcuts: random_range / uniform_random (min_value/max_value), parameter_link (parameter_name), custom_expression (expression). Not all fields apply to every type.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| module_name | string | Yes | Name of the module |
| input_name | string | Yes | Name of the input parameter |
| script_usage | string | Yes | |
| dynamic_input_type | string | Yes | random_range, uniform_random, parameter_link, custom_expression, or script (attach any DI script by path) |
| min_value | json | No | Minimum value for ranged types |
| max_value | json | No | Maximum value for ranged types |
| parameter_name | string | No | Parameter name for parameter_link type |
| expression | string | No | HLSL expression for custom_expression type |
| dynamic_input_script_path | string | No | For type=script: asset path of the dynamic-input script to attach (any of the ~283 available) |
| suggested_name | string | No | For type=script: display name for the attached dynamic input node |
| pin_defaults | json | No | For type=script: the dynamic input's own pins, values in set_niagara_stack_value shapes: {"Vector":[0,0,-1],"Float":444} |
cfa set_niagara_dynamic_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name InitialSize --input-name "SpriteSize" --script-usage ParticleSpawn --dynamic-input-type random_range --min-value 5.0 --max-value 15.0
cfa set_niagara_dynamic_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name InitializeParticle --input-name "Mass" --script-usage ParticleSpawn --dynamic-input-type script --dynamic-input-script-path "/Niagara/DynamicInputs/Utility/RandomJitterFloat.RandomJitterFloat" --pin-defaults '{"Jitter Amount":"0.5"}'set_niagara_curveSet a curve on a module input
Assigns a curve to a module input parameter. curve_type specifies the curve dimensionality (Float, Vector2, Vector3, Vector4, LinearColor). keys is a JSON array of key objects with time and value fields. Use for time-varying properties like color over life, size over life, or velocity curves.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| module_name | string | Yes | Name of the module |
| input_name | string | Yes | Name of the input parameter |
| script_usage | string | Yes | |
| curve_type | string | Yes | Curve type: Float, Vector2, Vector3, Vector4, LinearColor |
| keys | json | Yes | JSON array of curve keys [{time, value}...] |
cfa set_niagara_curve --system-path /Game/VFX/NS_Fire --emitter-name Flame --module-name ScaleColor --input-name "Scale Factor" --script-usage ParticleUpdate --curve-type Float --keys '[{"time": 0, "value": 0}, {"time": 0.2, "value": 1}, {"time": 1, "value": 0}]'
cfa set_niagara_curve --system-path /Game/VFX/NS_Fire --emitter-name Flame --module-name Color --input-name "Color" --script-usage ParticleUpdate --curve-type LinearColor --keys '[{"time": 0, "value": [1,0.5,0,1]}, {"time": 1, "value": [0.2,0,0,0]}]'set_niagara_stack_valueSet any module input value via the stack (local/enum/linked/hlsl/dynamic_input/data_interface/reset)
Universal, crash-free module-input value setter. Drives the editor's own stack (UNiagaraStackFunctionInput), so it never leaves the graph in a state the Niagara compiler rejects. kind selects the value form: local (scalar, [array] for vector/color, or {object} of fields), enum (name/display/int), linked (parameter_name), hlsl (expression), dynamic_input (dynamic_input_script), data_interface (data_interface_class + properties), reset (to_base for parent-emitter base). For a nested dynamic-input pin, pass input_name_stack instead of input_name.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter display name (omit for system-usage modules) |
| script_usage | string | Yes | |
| module_name | string | Yes | Module function name |
| input_name | string | Yes | Top-level input name (use input_name_stack for nested pins) |
| kind | string | No | local, enum, linked, hlsl, dynamic_input, data_interface, reset; inferred from the value field you pass |
| value | json | No | local/enum: scalar, [array] for vector/color, or {object} of fields |
| input_name_stack | json | No | Optional array: full dynamic-input chain, overrides input_name |
| parameter_name | string | No | kind=linked: source parameter name |
| expression | string | No | kind=hlsl: HLSL expression text |
| dynamic_input_script | string | No | kind=dynamic_input: dynamic-input script asset path |
| data_interface_class | string | No | kind=data_interface: DI class name or path |
| properties | json | No | kind=data_interface: JSON object applied to the created DI |
| to_base | bool | No | kind=reset: reset to parent-emitter base instead of script default |
| enabled | bool | No | The input's on/off checkbox in the stack (e.g. Random Seed's Override Seed); may be passed alone |
cfa set_niagara_stack_value --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name AddVelocity --input-name "Velocity" --script-usage ParticleSpawn --kind local --value '[0,0,250]'
cfa set_niagara_stack_value --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Color --input-name "Color" --script-usage ParticleUpdate --kind linked --parameter-name Particles.Colorget_niagara_stack_valueRead a module input's current value and kind (round-trips to set_niagara_stack_value)
Reads an input's current value mode via the stack view model and reports it in the same shape set_niagara_stack_value accepts: kind plus value/parameter_name/expression/dynamic_input_script/data_interface_class. Dynamic inputs recurse into their child inputs. Pass input_name_stack to read a nested dynamic-input pin.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Emitter display name (omit for system-usage modules) |
| script_usage | string | Yes | |
| module_name | string | Yes | Module function name |
| input_name | string | Yes | Top-level input name (use input_name_stack for nested pins) |
| input_name_stack | json | No | Optional array: full dynamic-input chain, overrides input_name |
cfa get_niagara_stack_value --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name AddVelocity --input-name "Velocity" --script-usage ParticleSpawnget_niagara_user_parametersGet user-exposed parameters
Returns user-exposed parameters on a Niagara system asset or on a placed Niagara component in the level. Provide system_path to read the asset definition, or actor_name to read runtime overrides on a placed instance. Shows parameter names, types, and value types. Use filter to narrow by parameter name substring.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Asset path of the Niagara system |
| actor_name | string | No | Name of a placed Niagara actor in the level |
| filter | string | No | Substring filter on parameter names |
cfa get_niagara_user_parameters --system-path /Game/VFX/NS_Fire
cfa get_niagara_user_parameters --actor-name "NS_Fire_Instance"
cfa get_niagara_user_parameters --system-path /Game/VFX/NS_Fire --filter Coloradd_niagara_user_parameterAdd a user parameter to a system
Adds a new user-exposed parameter to a Niagara system. User parameters appear in the Details panel when the system is placed in a level and can be set per-instance. parameter_type is the Niagara type name (Float, Vector, LinearColor, Bool, Int32, etc.). Optionally provide a JSON-encoded default_value.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| parameter_name | string | Yes | Name for the new parameter |
| parameter_type | string | Yes | Niagara type: Float, Vector, LinearColor, Bool, Int32, etc. |
| default_value | json | No | JSON-encoded default value |
cfa add_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name "Intensity" --parameter-type Float --default-value 1.0
cfa add_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name "ParticleColor" --parameter-type LinearColor --default-value '[1, 0.5, 0, 1]'set_niagara_user_parameterSet a user parameter value
Sets the value of a user-exposed parameter. When actor_name is provided, sets the per-instance override on a placed Niagara component. When system_path is provided, sets the default value on the asset. parameter_type must match the parameter's declared type.
| Parameter | Type | Required | Description |
|---|---|---|---|
| parameter_name | string | Yes | Name of the user parameter |
| parameter_type | string | No | Optional check: the type you expect (Float, Vector, LinearColor...); the parameter's own type is used |
| value | json | Yes | JSON-encoded parameter value |
| actor_name | string | No | Name of a placed Niagara actor for per-instance override |
| system_path | string | No | Asset path to set the default value |
cfa set_niagara_user_parameter --actor-name "NS_Fire_Instance" --parameter-name "Intensity" --parameter-type Float --value 2.5
cfa set_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name "ParticleColor" --parameter-type LinearColor --value '[0, 1, 0, 1]'remove_niagara_user_parameterRemove a user parameter from a system
Removes a user-exposed parameter from a Niagara system the way the editor's parameter panel does. On UE 5.8 module inputs linked to it fall back to a local value holding its value, and renderer bindings to it are cleared; on 5.6 and 5.7 the editor leaves those links in place, and so does this command, so relink them (link_niagara_parameter) or reset them (clear_niagara_module_input). Placed instances that override this parameter lose their overrides. An unknown name is refused with the real ones listed.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| parameter_name | string | Yes | Name of the parameter to remove |
cfa remove_niagara_user_parameter --system-path /Game/VFX/NS_Fire --parameter-name Intensitylink_niagara_parameterLink a module input to a parameter
Links a module input to a Niagara parameter by namespace path. This makes the module input read its value from the linked parameter at runtime instead of using a static value. Common parameter paths include User.ParamName for user parameters, Emitter.Age, Particles.Lifetime, Engine.DeltaTime, etc.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| module_name | string | Yes | Name of the module |
| input_name | string | Yes | Name of the input parameter to link |
| script_usage | string | Yes | |
| linked_parameter | string | Yes | Namespace path of the parameter to link (e.g., User.Intensity) |
cfa link_niagara_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name ScaleColor --input-name "Scale Factor" --script-usage ParticleUpdate --linked-parameter "User.Intensity"
cfa link_niagara_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name Color --input-name "Color" --script-usage ParticleUpdate --linked-parameter "User.ParticleColor"add_niagara_rendererAdd a renderer to an emitter
Adds a renderer to an emitter. renderer_type specifies the kind: SpriteRenderer, MeshRenderer, RibbonRenderer, LightRenderer, ComponentRenderer, etc. Optionally set the material and mesh at creation time. Use set_niagara_renderer_property and set_niagara_renderer_binding to configure further.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| renderer_type | string | Yes | Type: sprite, mesh, ribbon, light, component (the *Renderer long form also works) |
| material_path | string | No | Material asset path to assign |
| mesh_path | string | No | Static mesh asset path (for MeshRenderer) |
cfa add_niagara_renderer --system-path /Game/VFX/NS_Fire --emitter-name Sparks --renderer-type SpriteRenderer --material-path /Game/Materials/M_Spark
cfa add_niagara_renderer --system-path /Game/VFX/NS_Fire --emitter-name Debris --renderer-type MeshRenderer --mesh-path /Game/Meshes/SM_Chunk --material-path /Game/Materials/M_Rockremove_niagara_rendererRemove a renderer from an emitter
Removes a renderer from an emitter by its zero-based index. An emitter can have multiple renderers; use get_niagara_emitters or get_niagara_renderer_info to see their indices.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| renderer_index | int | Yes | Zero-based index of the renderer to remove |
cfa remove_niagara_renderer --system-path /Game/VFX/NS_Fire --emitter-name Sparks --renderer-index 1get_niagara_renderer_infoGet renderer properties and bindings
Returns detailed information about a renderer on an emitter, including its type, material, mesh (if applicable), all configurable properties, and all attribute bindings (which particle attributes drive which rendering features). Use to inspect before modifying.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| renderer_index | int | No | Zero-based renderer index; -1 (default) lists every renderer; an index out of range is refused |
cfa get_niagara_renderer_info --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_renderer_info --system-path /Game/VFX/NS_Fire --emitter-name Sparks --renderer-index 1set_niagara_renderer_propertySet a property on a renderer
Sets a property on a renderer. Common properties include SortMode, SubImageSize, Material, Alignment, FacingMode, SourceMode (for ribbons), and mesh-specific settings. Use get_niagara_renderer_info to discover available properties.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Asset path of the Niagara system (with emitter_name) |
| emitter_name | string | No | Name of the emitter inside the system |
| emitter_path | string | No | Asset path of a standalone emitter (instead of system_path + emitter_name) |
| property | string | Yes | Property name to set |
| value | json | Yes | JSON-encoded property value |
| renderer_index | int | No | Zero-based renderer index |
cfa set_niagara_renderer_property --system-path /Game/VFX/NS_Fire --emitter-name Sparks --property SortMode --value '"ViewDistance"'
cfa set_niagara_renderer_property --emitter-path /Game/CFATest/E_Spark.E_Spark --property Material --value "/Niagara/DefaultAssets/DefaultSpriteMaterial.DefaultSpriteMaterial"set_niagara_renderer_bindingBind a renderer slot to a particle attribute
Binds a renderer slot to an attribute, like the slot's dropdown in the editor. The attribute must exist in the emitter's last compile (or be a User parameter) and have the slot's type: a ribbon's RibbonIdBinding takes a NiagaraID, not an int. A wrong name or type is refused with the valid choices listed. binding_name accepts the slot with or without the Binding suffix (Color = ColorBinding); a wrong slot lists the renderer's slots.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| binding_name | string | Yes | Renderer binding slot name (e.g., ColorBinding, SpriteSizeBinding) |
| attribute | string | Yes | Particle attribute path (e.g., Particles.Color) |
| renderer_index | int | No | Zero-based renderer index |
cfa set_niagara_renderer_binding --system-path /Game/VFX/NS_Fire --emitter-name Sparks --binding-name ColorBinding --attribute "Particles.Color"
cfa set_niagara_renderer_binding --system-path /Game/VFX/NS_Fire --emitter-name Sparks --binding-name SpriteSizeBinding --attribute "Particles.SpriteSize"layout_niagara_graphAuto-layout a Niagara script graph
Re-arranges a Niagara graph so it reads left to right into its Output node. Nodes are placed in columns by longest path to that sink, each one pin-aligned to what it feeds, and rows are stacked so boxes never overlap; unrelated sub-graphs become separate bands and fully disconnected nodes are parked out of the way. Node sizes are measured from the real graph widgets rather than guessed, so a Custom HLSL node gets the width its code actually needs and a Map Get with many pins gets the height. Long or node-crossing wires are then rerouted through reroute knots along a clean lane. Connectivity is never changed (A to B becomes A to knot to B, same endpoints) and knots from a previous run are dissolved first, so running it twice gives the same result. That dissolve takes out EVERY reroute in the graph, hand-placed ones included: a connected reroute is dissolved losslessly (its source is rewired straight to its targets, then routing is re-derived) while a disconnected one routes nothing and is dropped. The count comes back as reroutes_dissolved, so pass --route-knots=false if a graph has reroutes you placed deliberately. Addresses a graph exactly the way export_graph and build_graph do, so omitting --graph on an asset holding several lists them instead of guessing; --all-graphs lays out every one.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string | Yes | Niagara System, Emitter or Script asset path |
| graph | string | No | Which graph, using the selector export_graph prints (empty = the only one) |
| container_id | string | No | Select by exact container id instead of --graph |
| all_graphs | bool | No | Lay out every graph in the asset |
| route_knots | bool | No | Insert reroute knots for long or node-crossing wires |
cfa layout_niagara_graph --asset "/Game/FX/NSM_Drift"
cfa layout_niagara_graph --asset "/Game/FX/NS_Sparks" --graph "ScratchPad/TurbulentDrift"
cfa layout_niagara_graph --asset "/Game/FX/NS_Sparks" --all-graphscreate_niagara_scratch_pad_moduleCreate a scratch pad module on a system or an emitter
Creates a new scratch pad module. Scratch pad modules are local scripts used for prototyping custom logic before extracting it to a standalone module asset. There are exactly TWO scopes, decided by which asset owns the scratch pad: pass system_path for a SYSTEM scratch pad (shared across that system's emitters, and the only kind a system editor can show), or emitter_path for a scratch pad on an emitter ASSET, which then travels with that emitter into any system reusing it. system_path plus emitter_name is REFUSED: a system editor resolves its scratch pad list to System->ScratchPadScripts and nothing else, so a scratch pad written into an emitter's container through a system would be invisible and uneditable there. Set parent_scratch only when building or repairing an inheritance chain, since parent scratch pads are what an inheriting emitter sees from its base. NOTE: the engine uniquifies the name (e.g. "CustomDrag" becomes "CustomDrag_0"); use the returned module_name verbatim for all follow-up scratch-pad commands.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System that owns the scratch pad (system scope) |
| emitter_path | string | No | Emitter asset that owns the scratch pad instead of a system (emitter scope) |
| script_usage | string | Yes | Stage the module can be added to: EmitterSpawn, EmitterUpdate, ParticleSpawn, ParticleUpdate, SystemSpawn, SystemUpdate |
| module_type | string | No | What the script IS: module | dynamic_input | function (separate axis from the stage) |
| output_type | string | No | dynamic_input only: the Niagara type its Output node returns (float, Vector, LinearColor, bool, int32...) |
| module_name | string | No | Display name for the scratch pad module |
| parent_scratch | bool | No | Write to the emitter's PARENT scratch pads (inheritance base) instead of its own |
cfa create_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --script-usage ParticleUpdate --module-name "CustomDrag"
cfa create_niagara_scratch_pad_module --emitter-path /Game/VFX/E_Spark --script-usage ParticleUpdate --module-name "Wobble"set_niagara_scratch_pad_hlslSet HLSL code on a scratch pad module
Sets the HLSL code body, input definitions, and output definitions on a scratch pad module. inputs is a JSON array of {name, type} objects defining input pins. outputs is a JSON array of {name, type} objects defining output pins. The HLSL code runs per-particle or per-emitter depending on the module's script_usage.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| hlsl_code | string | Yes | HLSL code body for the module |
| inputs | json | No | JSON array of input definitions [{name, type}...] |
| outputs | json | No | JSON array of output definitions [{name, type}...] |
cfa set_niagara_scratch_pad_hlsl --system-path /Game/VFX/NS_Fire --module-name "CustomDrag" --hlsl-code "OutVelocity = Velocity * (1.0 - DragCoeff * DeltaTime);" --inputs '[{"name":"Velocity","type":"Vector"},{"name":"DragCoeff","type":"Float"}]' --outputs '[{"name":"OutVelocity","type":"Vector"}]'create_niagara_module_assetCreate a standalone Niagara script asset (module / dynamic input / function)
Creates a new standalone Niagara script asset that can be shared across systems. module_type selects the kind: module, dynamic_input, or function. Duplicates the editor's matching default template when available, else builds a minimal compilable graph. Author its graph afterward with the graph/HLSL/pin verbs via --script-path, then reference it into a system with add_niagara_module --module-path. Each graph/HLSL/pin edit auto-saves the standalone asset to disk, so authored scripts survive editor restarts. Standalone module/dynamic-input/function scripts have no self-compile, they compile in the context of the system that uses them, so 'compile status unknown' on the standalone asset is expected until it is placed in a system. New assets default to library_visibility=Exposed so they show up in the stack's Add menu; override as needed.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_path | string | Yes | Content Browser path for the new script asset |
| module_type | string | No | module | dynamic_input | function |
| description | string | No | Description shown in the asset's details |
| library_visibility | string | No | Exposed (in Add menu) | Unexposed | Hidden |
| category | string | No | Category shown in the asset's details / Add menu grouping |
| suggested | bool | No | Add to the 'Suggested' category at the top of Add menus |
cfa create_niagara_module_asset --asset-path /Game/VFX/Modules/NM_CustomForce --module-type module --description "Applies custom force"
cfa create_niagara_module_asset --asset-path /Game/VFX/DynamicInputs/DI_Jitter --module-type dynamic_input --category "Custom/Motion" --suggestedadd_niagara_event_handlerAdd an event handler to an emitter
Adds an event handler that responds to events generated by another emitter. execution_mode controls how the handler runs: every_particle (run on each existing particle), spawned_particles (spawn new particles per event). Use for collision responses, death events, or inter-emitter communication.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter receiving the event |
| source_emitter | string | Yes | Name of the emitter generating the event |
| event_name | string | Yes | Event type name (e.g., CollisionEvent, DeathEvent) |
| execution_mode | string | No | Mode: every_particle, spawned_particles |
| spawn_number | int | No | Number of particles to spawn per event (for spawned_particles mode) |
| max_events_per_frame | int | No | Max events per frame (0 = unlimited) |
cfa add_niagara_event_handler --system-path /Game/VFX/NS_Fire --emitter-name Sparks --source-emitter Flame --event-name "CollisionEvent" --execution-mode spawned_particles --spawn-number 3
cfa add_niagara_event_handler --system-path /Game/VFX/NS_Fire --emitter-name Smoke --source-emitter Flame --event-name "DeathEvent" --execution-mode every_particleadd_niagara_simulation_stageAdd a simulation stage to an emitter
Adds a custom simulation stage to an emitter. Simulation stages run additional passes after the main ParticleUpdate, useful for multi-pass algorithms like fluid simulation, neighbor searches, or iterative constraint solving. iteration_source can be particles or a data interface.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| stage_name | string | Yes | Display name for the simulation stage |
| iteration_source | string | No | Iteration source: particles or a data interface name |
| num_iterations | int | No | Number of iterations per frame |
cfa add_niagara_simulation_stage --system-path /Game/VFX/NS_Fluid --emitter-name Particles --stage-name "PressureSolve" --iteration-source particles --num-iterations 4
cfa add_niagara_simulation_stage --system-path /Game/VFX/NS_Cloth --emitter-name Vertices --stage-name "ConstraintSolve" --num-iterations 8get_niagara_event_handlersList event handlers on an emitter
Returns all event handlers configured on an emitter, including source emitter, event type, execution mode, spawn number, and associated module stacks. Use before adding or modifying event handlers.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
cfa get_niagara_event_handlers --system-path /Game/VFX/NS_Fire --emitter-name Sparksspawn_niagara_effectSpawn a Niagara effect in the level
Spawns a Niagara system as an actor in the current level at the specified location. Returns the spawned actor name. Transform args accept Unreal canonical strings "(X=..,Y=..,Z=..)" / "(P=..,Y=..,R=..)" as well as bare CSV "X,Y,Z" or JSON object/array. Set auto_activate to false to spawn deactivated (use control_niagara_effect to activate later). Use actor_label for the Outliner display label (canonical across MCP tools); name is a legacy alias kept for backward compat.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system to spawn |
| location | string | No | World position: "(X=..,Y=..,Z=..)", "X,Y,Z", or JSON {X,Y,Z} |
| rotation | string | No | Rotation: "(P=..,Y=..,R=..)", "Pitch,Yaw,Roll", or JSON {Pitch,Yaw,Roll} |
| scale | string | No | Scale: "(X=..,Y=..,Z=..)", "X,Y,Z", or JSON {X,Y,Z} |
| actor_label | string | No | Outliner display label (canonical form) |
| name | string | No | Legacy alias for actor_label (actor_label wins if both given) |
| auto_activate | bool | No | Activate the effect immediately on spawn |
cfa spawn_niagara_effect --system-path /Game/VFX/NS_Explosion --location "(X=100,Y=200,Z=0)"
cfa spawn_niagara_effect --system-path /Game/VFX/NS_Fire --location "(X=0,Y=0,Z=50)" --scale "(X=2,Y=2,Z=2)" --actor-label "CampfireVFX"
cfa spawn_niagara_effect --system-path /Game/VFX/NS_Ambient --location "(X=0,Y=0,Z=0)" --auto-activate=falsecontrol_niagara_effectControl a Niagara effect in the level (play, stop, reset, pause, advance, seek, debug)
Controls the Niagara component of any level actor. action: activate, deactivate (finish naturally), kill (stop now), toggle, reset (the Details panel Reset button), reinit (rebuild the system instance), pause, unpause, advance (simulate --ticks or --seconds now), seek (restart at --age seconds), debug (the Details panel Debug button: opens the Niagara Debugger on this component). The response reports state, paused, age and live particle count. Use get_niagara_actors to find actor names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| actor_name | string | Yes | Level actor that owns the Niagara component |
| action | string | Yes | activate, deactivate, kill, toggle, reset, reinit, pause, unpause, advance, seek, debug |
| component_name | string | No | Which Niagara component when the actor has several (default: the first) |
| ticks | int | No | advance: simulation ticks to run |
| seconds | float | No | advance: seconds to simulate (wins over --ticks) |
| age | float | No | seek: age in seconds to restart the effect at |
| tick_delta | float | No | advance/seek: seconds per tick (default: the system's fixed tick delta, else 1/30) |
cfa control_niagara_effect --actor-name "NS_Fire_Instance" --action activate
cfa control_niagara_effect --actor-name "CampfireVFX" --action pause
cfa control_niagara_effect --actor-name "CampfireVFX" --action advance --seconds 0.5
cfa control_niagara_effect --actor-name "NS_Ambient_0" --action seek --age 2add_niagara_componentAdd a Niagara component to an actor
Adds a UNiagaraComponent to an existing actor in the level. The component plays the specified Niagara system as a child of the actor. Use relative_location to offset the effect from the actor's root. Set auto_activate to false if you want to trigger it later.
| Parameter | Type | Required | Description |
|---|---|---|---|
| actor_name | string | Yes | Name of the target actor in the level |
| system_path | string | Yes | Asset path of the Niagara system |
| component_name | string | No | Name for the new component |
| relative_location | json | No | JSON object {X, Y, Z} offset from actor root |
| auto_activate | bool | No | Activate the component immediately |
cfa add_niagara_component --actor-name "Torch_BP" --system-path /Game/VFX/NS_TorchFlame --component-name "FlameVFX" --relative-location '{"X": 0, "Y": 0, "Z": 100}'
cfa add_niagara_component --actor-name "PlayerCharacter" --system-path /Game/VFX/NS_FootDust --auto-activate=falseget_niagara_actorsList Niagara effect actors in the level
Returns all Niagara system actors currently placed in the level. Optionally filter by system asset name or path (substring of either) to find instances of a specific effect. Shows actor name, system path, location, and active state.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_filter | string | No | Substring of the Niagara system asset name or path |
cfa get_niagara_actors
cfa get_niagara_actors --system-filter "/Game/VFX/NS_Fire"list_niagara_modulesList available Niagara modules
Searches the modules the editor's Add Module menu offers (engine and project), with the same filters: deprecated and non-library modules are hidden unless asked for, and --stage keeps only modules valid in that stage. --search matches every word anywhere in the name, keywords, category, description or path, ignoring case, spaces and underscores ("spawn burst" finds SpawnBurst_Instantaneous); name hits rank first. No match returns close names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| search | string | No | Words to find (all must match), e.g. "spawn burst" |
| stage | string | No | Only modules valid in this stage: particle_spawn, particle_update, emitter_update, simulation_stage... |
| category | string | No | Folder category filter (spawn, update, forces, beams...) |
| max_results | int | No | Maximum number of results; truncation is reported |
| include_engine | bool | No | Include engine /Niagara modules |
| include_deprecated | bool | No | Also list deprecated modules (hidden in the editor's menu) |
| include_non_library | bool | No | Also list modules not exposed to the library |
cfa list_niagara_modules --search "spawn burst"
cfa list_niagara_modules --search vortex --stage particle_update
cfa list_niagara_modules --search curl --include-deprecatedlist_niagara_emitter_templatesList available emitter templates
Lists built-in and project emitter templates that can be used with add_niagara_emitter. Templates provide pre-configured emitters with modules and renderers for common effects like fountains, sprites, mesh particles, ribbons, etc. The fluids category lists the NiagaraFluids solver emitters (needs the NiagaraFluids plugin enabled). The project category is every emitter asset under /Game, read from the asset registry with its Asset Description; pass its path to add_niagara_emitter --template. Filter by category to narrow results.
| Parameter | Type | Required | Description |
|---|---|---|---|
| category | string | No | all, sprites, meshes, ribbons, beams, behaviors, fluids or project (singular works too) |
| filter | string | No | Substring of the template name or description |
cfa list_niagara_emitter_templates
cfa list_niagara_emitter_templates --category sprite
cfa list_niagara_emitter_templates --category fluidslist_niagara_data_interfacesList Niagara data interface types
Lists available Niagara data interface types. Data interfaces provide external data to Niagara simulations (meshes, textures, audio, physics, landscape, splines, etc.). Use filter to search by name. Returns type names and descriptions.
| Parameter | Type | Required | Description |
|---|---|---|---|
| filter | string | No | Filter data interfaces by name substring |
cfa list_niagara_data_interfaces
cfa list_niagara_data_interfaces --filter "Mesh"list_niagara_parameter_typesList Niagara parameter types by scope
Lists the Niagara types the type registry allows in a scope: user (User.* parameters), particle (Particles.* attributes), emitter, system, parameter, payload, numeric, index, or all. An unknown scope or kind is refused. Use filter to narrow results by name; max_results caps the list and total_matched says how many matched.
| Parameter | Type | Required | Description |
|---|---|---|---|
| scope | string | No | user, particle, emitter, system, parameter, payload, numeric, index or all |
| filter | string | No | Filter parameter types by name substring |
cfa list_niagara_parameter_types
cfa list_niagara_parameter_types --scope particle --filter "Color"
cfa list_niagara_parameter_types --scope all --filter Vectorget_niagara_emitter_attributesGet attributes available on an emitter
Returns attributes available on an emitter including rapid iteration parameters and well-known particle attributes (Position, Velocity, Color, etc.). Shows names, types, scope, and source. Use filter to narrow by attribute name substring.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| scope | string | No | all, particle (Particles.* and the particle stages) or emitter (the emitter stages) |
| filter | string | No | Substring filter on attribute names |
cfa get_niagara_emitter_attributes --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_emitter_attributes --system-path /Game/VFX/NS_Fire --emitter-name Sparks --scope particle
cfa get_niagara_emitter_attributes --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Colorget_niagara_renderer_propertiesList editable properties on a renderer with current values
Returns all editable UPROPERTY fields on a renderer (sprite, ribbon, mesh, light, component) with their current values and valid enum options. Use filter to get specific properties, strongly recommended to save tokens. Property names can be used directly with set_niagara_renderer_property.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| renderer_index | int | No | Renderer index (default 0) |
| filter | string | No | Substring filter on property name (e.g. Facing, Material, Sort, Shadow) |
cfa get_niagara_renderer_properties --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Facing
cfa get_niagara_renderer_properties --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Material
cfa get_niagara_renderer_properties --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter Sortset_niagara_system_propertySet a system-level property via reflection
Sets any UPROPERTY on UNiagaraSystem: WarmupTime, WarmupTickDelta, bDeterminism, RandomSeed, bFixedBounds, FixedBounds, bFixedTickDelta, FixedTickDeltaTime, etc. Use the exact C++ property name (PascalCase). For booleans, can auto-add 'b' prefix.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| property | string | Yes | Property name (PascalCase, e.g. WarmupTime, bDeterminism) |
| value | string | Yes | Value as string |
cfa set_niagara_system_property --system-path /Game/VFX/NS_Fire --property WarmupTime --value 2.0
cfa set_niagara_system_property --system-path /Game/VFX/NS_Fire --property bDeterminism --value true
cfa set_niagara_system_property --system-path /Game/VFX/NS_Fire --property RandomSeed --value 42get_niagara_rapid_iteration_parametersGet actual module input values (spawn rate, colors, forces, etc.)
Returns all rapid iteration parameters, the real configurable values on Niagara modules. These include spawn rate, gravity, colors, sizes, lifetimes, and every other editable module input. Each parameter includes its module name, input name, current value, and type. Use the filter parameter to narrow results.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| script_usage | string | No | |
| filter | string | No | Substring filter on parameter name (e.g. Color, SpawnRate, Gravity) |
cfa get_niagara_rapid_iteration_parameters --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_rapid_iteration_parameters --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter SpawnRate
cfa get_niagara_rapid_iteration_parameters --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage particle_spawn --filter Colorset_niagara_rapid_iteration_parameterSet a module input value (spawn rate, color, force, size, etc.)
Sets a rapid iteration parameter value on a Niagara module. This is the primary way to change module inputs like spawn rate, colors, forces, sizes, and lifetimes. Use get_niagara_rapid_iteration_parameters first to discover available parameters. Value format: float (5.0), int (10), bool (true), vector ({"x":1,"y":2,"z":3} or [1,2,3]), color ({"r":1,"g":0.5,"b":0,"a":1}); fields left out keep their value. A value that does not parse for the input's type is refused and nothing is written.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Asset path of the Niagara system (with emitter_name) |
| emitter_name | string | No | Name of the emitter inside the system |
| emitter_path | string | No | Asset path of a standalone emitter (instead of system_path + emitter_name) |
| module_name | string | Yes | Module name (e.g. SpawnRate, InitializeParticle, GravityForce) |
| input_name | string | Yes | Input parameter name (e.g. SpawnRate, Color, Gravity) |
| value | json | Yes | Value to set, format depends on type |
| script_usage | string | Yes |
cfa set_niagara_rapid_iteration_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnRate --input-name SpawnRate --value 50 --script-usage emitter_update
cfa set_niagara_rapid_iteration_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name InitializeParticle --input-name Color --value '{"r":1,"g":0.3,"b":0,"a":1}' --script-usage particle_spawn
cfa set_niagara_rapid_iteration_parameter --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name GravityForce --input-name Gravity --value '{"x":0,"y":0,"z":-980}' --script-usage particle_updateget_niagara_system_errorsGet compilation errors and warnings for a Niagara system
Returns compile and runtime-setup issues: compile events from the system and each emitter script (each names the module that raised it), GPU shader errors, renderer feedback and message-log entries. Most severe first. Module-level stack issues (unmet dependencies, deprecated modules, missing fixed bounds) come from validate_niagara_stack.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | No | Filter to issues from a specific emitter |
| severity | string | No | Severity filter: error, warning, info, or all |
| max_results | int | No | Maximum issues, most severe first; truncation is reported |
cfa get_niagara_system_errors --system-path /Game/VFX/NS_Fire
cfa get_niagara_system_errors --system-path /Game/VFX/NS_Fire --emitter-name Sparks --severity errorget_niagara_particle_statsGet live particle counts and emitter execution state
Returns live particle counts per emitter, total spawned, execution state, sim target and per-emitter bounds (component-local). Reads the open editor preview, the PIE world or a level actor (--source, --actor-name); the result names which instance it read.
cfa get_niagara_particle_stats --system-path /Game/VFX/NS_Fire
cfa get_niagara_particle_stats --system-path /Game/VFX/NS_Fire --emitter-name Sparksset_niagara_playback_rangeSet the timeline playback range in the Niagara editor
Controls how long the Niagara editor preview plays. If your effect dies at 0.02s, extend the range. For looping effects set a longer range (e.g. 5-10 seconds). Optionally override the frame rate.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| range_end | float | Yes | End time in seconds (e.g. 5.0) |
| range_start | float | No | Start time in seconds |
| frame_rate | int | No | Optional frame rate override (default 60) |
cfa set_niagara_playback_range --system-path /Game/VFX/NS_Fire --range-end 5.0
cfa set_niagara_playback_range --system-path /Game/VFX/NS_Fire --range-start 0.5 --range-end 10.0 --frame-rate 30get_niagara_playback_rangeGet the current playback range and frame rate settings
Returns the current timeline playback range (start/end in seconds) and frame rate configuration. Use to check if the playback range is too short, a common cause of effects appearing to not play.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
cfa get_niagara_playback_range --system-path /Game/VFX/NS_Fireget_niagara_module_versionsCheck for outdated modules in an emitter
Identifies modules that have newer versions available, a common source of Niagara warnings and compatibility issues. Lists each module of every stack stage once (events and simulation stages included), labelled with its stage like get_niagara_modules, with current and available versions. Use filter to narrow by module name substring.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Asset path of the Niagara system |
| emitter_name | string | Yes | Name of the emitter |
| filter | string | No | Filter modules by name substring |
cfa get_niagara_module_versions --system-path /Game/VFX/NS_Fire --emitter-name Sparks
cfa get_niagara_module_versions --system-path /Game/VFX/NS_Fire --emitter-name Sparks --filter "Spawn"export_niagaraExport a full Niagara System / Script / Emitter as reflection-grounded JSON
Auto-detects the asset class and writes one JSON file. System export captures: system properties, user parameters (with default values), every emitter (sim target, local space, full emitter-data properties, renderers), every stage's ordered module stack with resolved input values (including dynamic inputs + nested pins), and all scratch-pad/local scripts WITH their full node graph + dynamic inputs. Separate-asset modules/DIs (engine or /Game) are listed as lightweight references (path + name + description/category/library-visibility + usage flags), NOT their internal graph, which is re-exportable by running export_niagara on that asset's path. Written to Saved/CodeFizzEditorAgent/Exports/.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string | No | Niagara System / Script / Emitter asset path (alias: asset_path) |
| include_values | bool | No | Read module input values via the stack (opens the system editor) |
| include_referenced_graphs | bool | No | Inline full graphs for referenced separate-asset modules/DIs too (default: reference by path only) |
| include_stage_graphs | bool | No | Also dump the raw spliced per-stage graphs |
| inline | bool | No | Also return the full export JSON in the response (not just the file path) |
cfa export_niagara --asset /Game/VFX/NS_SolarSystem
cfa export_niagara --asset /Game/VFX/NM_PlanetInit
cfa export_niagara --asset /Game/VFX/NS_SolarSystem --include-values=false --include-stage-graphs=trueget_niagara_graph_nodesIntrospect every node inside a Niagara graph
Three resolver modes: (1) system_path + module_name for scratch pad module, (2) system_path + emitter_name + script_usage for emitter stack graph, (3) script_path for standalone UNiagaraScript asset. Returns nodes with pin/link detail based on verbosity. Token-efficient, use type_filter/name_filter to narrow.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (mode 1) |
| script_usage | string | No | |
| script_path | string | No | Standalone UNiagaraScript asset path (mode 3) |
| verbosity | string | No | summary | connections | full |
| type_filter | string | No | Substring on short class name (e.g. MapGet, Op, CustomHlsl) |
| name_filter | string | No | Substring on node title |
cfa get_niagara_graph_nodes --system-path /Game/VFX/NS_Fire --module-name MyScratchPad
cfa get_niagara_graph_nodes --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage emitter_update --type-filter FunctionCallget_niagara_node_infoDeep inspect a single Niagara node by index, class, or GUID
Returns full pin layout, link detail, and node-type-specific fields (op_name for Op, function_script for FunctionCall, hlsl_preview for CustomHlsl, input_name/type for Input).
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
| node_index | int | No | Ordinal index in Graph->Nodes |
| node_class | string | No | Short ('MapGet') or full ('NiagaraNodeParameterMapGet') |
| node_id | string | No | FGuid string matching UEdGraphNode::NodeGuid |
cfa get_niagara_node_info --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 2
cfa get_niagara_node_info --script-path /Game/VFX/MyModule --node-class MapGettrace_niagara_connectionBFS trace of connections upstream or downstream from a node
Walks the graph from a starting node with optional pin_name filter. Returns each visited node with depth so the dependency chain is visible without dumping the whole graph. A start node that is not in the graph is refused, naming it and listing the node classes present.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
| node_index | int | No | Starting node index |
| node_class | string | No | Starting node class |
| node_id | string | No | Starting node GUID |
| direction | string | No | upstream | downstream | both |
| max_depth | int | No | Max BFS depth |
| pin_name | string | No | Optional starting-pin name filter |
cfa trace_niagara_connection --system-path /Game/VFX/NS_Fire --module-name MyDI --node-class MapGet --direction downstream --pin-name "Vector Array"validate_niagara_graphClassify orphaned, dead-end, and missing-input nodes in a Niagara graph
Returns orphaned (no incoming or outgoing links), dead_ends (inputs connected but no outputs consumed), missing_inputs (no link and no default) and unreachable_from_output, plus a verdict: fail when an input has neither link nor default, pass_with_warnings for stray nodes or an open editor copy out of sync with the asset, pass otherwise. Skips +Add placeholder pins.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa validate_niagara_graph --system-path /Game/VFX/NS_Fire --module-name MyDIapply_niagara_scratch_padApply scratch pad changes in an open Niagara System (Apply Scratch button)
Triggers exactly what a user clicks in the open Niagara System editor. With module_name it applies that one scratch script (FNiagaraScratchPadScriptViewModel::ApplyChanges). WITHOUT module_name it is the toolbar's "Apply Scratch" button, applies ALL pending scratch changes via the system's scratch-pad view model (FNiagaraSystemToolkit::OnApplyScratchPadChanges). Pass compile=true to also recompile + refresh + save the system afterwards (like clicking Compile next). Requires the system to be open in the editor.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset path |
| module_name | string | No | Scratch pad module/DI name, omit to apply ALL pending scratch changes (Apply Scratch button) |
| compile | bool | No | After applying, recompile + refresh + save the system (like clicking Compile next) |
cfa apply_niagara_scratch_pad --system-path /Game/VFX/NS_Fire # Apply Scratch (all)
cfa apply_niagara_scratch_pad --system-path /Game/VFX/NS_Fire --module-name MyDI # one script
cfa apply_niagara_scratch_pad --system-path /Game/VFX/NS_Fire --compileapply_and_save_niagara_scratch_padApply a scratch pad module's edit-copy and save the asset (Apply & Save button)
Mirrors FNiagaraScratchPadScriptViewModel::ApplyChangesAndSave.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset path |
| module_name | string | Yes | Scratch pad module name |
cfa apply_and_save_niagara_scratch_pad --system-path /Game/VFX/NS_Fire --module-name MyDIlist_niagara_scratch_pad_modulesList all scratch pad modules on a Niagara System
Returns name, path, usage, node counts, and custom HLSL node count per script.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset path |
cfa list_niagara_scratch_pad_modules --system-path /Game/VFX/NS_Firedelete_niagara_scratch_pad_moduleDelete a scratch pad module from a system or emitter
Removes the scratch pad from the container that actually owns it. Searching starts with the system's own scratch pads, then every emitter's own and inherited ones, so a scratch pad that ended up on an emitter can still be found and cleaned up. Narrow the search with emitter_name.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Emitter asset path (instead of system_path) |
| emitter_name | string | No | With system_path: only search this emitter |
| module_name | string | Yes | Scratch pad module name |
cfa delete_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --module-name MyDI
cfa delete_niagara_scratch_pad_module --emitter-path /Game/VFX/E_Spark --module-name Wobbleduplicate_niagara_scratch_pad_moduleDuplicate a scratch pad module with a new name
The copy is placed in the same container as its source. Duplicating an emitter-scoped scratch pad reached through a system is refused for the same reason create is: a system editor never displays an emitter's container. Address the emitter asset with emitter_path instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Emitter asset path (instead of system_path) |
| module_name | string | Yes | Source scratch pad module name |
| new_name | string | Yes | New scratch pad module name |
cfa duplicate_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --module-name MyDI --new-name MyDICopy
cfa duplicate_niagara_scratch_pad_module --emitter-path /Game/VFX/E_Spark --module-name Wobble --new-name Wobble2rename_niagara_scratch_pad_moduleRename a scratch pad module
Renames in place, keeping the script under the outer that owns it. Works in every scope so a scratch pad on an emitter can be renamed too. Narrow the search with emitter_name.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Emitter asset path (instead of system_path) |
| emitter_name | string | No | With system_path: only search this emitter |
| module_name | string | Yes | Current scratch pad module name |
| new_name | string | Yes | New scratch pad module name |
cfa rename_niagara_scratch_pad_module --system-path /Game/VFX/NS_Fire --module-name Old --new-name New
cfa rename_niagara_scratch_pad_module --emitter-path /Game/VFX/E_Spark --module-name Old --new-name Newget_niagara_script_propertiesRead the details-panel properties of a Niagara script
Returns Category, Description, Keywords, ModuleUsageBitmask, ProvidedDependencies, RequiredDependencies, LibraryVisibility, bDeprecated, DeprecationMessage, bExperimental, ExperimentalMessage, NumericOutputTypeSelectionMode, ScriptMetaData, ConversionUtility.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (with module_name) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa get_niagara_script_properties --system-path /Game/VFX/NS_Fire --module-name MyDIset_niagara_script_propertiesBatch-set details-panel properties on a Niagara script
Pass a JSON object under --properties with any subset of the editable fields. ModuleUsageBitmask uses ENiagaraScriptUsage bitmask (e.g. particle spawn + update = (1<<3)|(1<<4)). ProvidedDependencies takes a JSON array of strings; RequiredDependencies an array of objects.
| Parameter | Type | Required | Description |
|---|---|---|---|
| properties | object | Yes | JSON object of property name -> value |
| system_path | string | No | Niagara System asset path (with module_name) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa set_niagara_script_properties --system-path /Game/VFX/NS_Fire --module-name MyDI --properties '{"Category":"MCP/DI","bExperimental":true,"ProvidedDependencies":["MCP.ArrayLength"]}'list_niagara_script_parametersList input + output parameters of a Niagara script
Outputs come from UNiagaraNodeOutput::Outputs. Inputs come from script variable metadata filtered to Module.* / Input.* / User.* namespaces.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa list_niagara_script_parameters --system-path /Game/VFX/NS_Fire --module-name MyDIadd_niagara_script_parameterAdd an input or output parameter to a Niagara script
For 'output' direction appends to UNiagaraNodeOutput::Outputs. Type must be a FNiagaraTypeRegistry name (e.g. float, Vector, Vector2D, Vector4, LinearColor, Quat, Position, NiagaraID, int32, bool, Matrix, NiagaraDataInterfaceArrayPosition).
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Parameter name (no namespace → becomes Module.<name>) |
| type | string | Yes | Niagara type name |
| direction | string | No | output | input |
| default_value | json | No | input only: the value the module input starts with when a system does not override it (a number, [x,y,z], [r,g,b,a], true/false or an enum name) |
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa add_niagara_script_parameter --system-path /Game/VFX/NS_Fire --module-name MyDI --name TestFloat --type float --direction outputremove_niagara_script_parameterRemove a named input or output parameter, cascades to Map Get/Set pins; an unknown name is refused
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Parameter name |
| direction | string | No | output | input |
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa remove_niagara_script_parameter --system-path /Game/VFX/NS_Fire --module-name MyDI --name Module.Default --direction inputrename_niagara_script_parameterRename a script parameter across asset and edit-copy graphs; an input also renames its Map Get/Set pins
| Parameter | Type | Required | Description |
|---|---|---|---|
| old_name | string | Yes | Current parameter name |
| new_name | string | Yes | New parameter name |
| direction | string | No | output | input |
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa rename_niagara_script_parameter --system-path /Game/VFX/NS_Fire --module-name MyDI --old-name NewOutput --new-name FinalNoise --direction outputadd_niagara_graph_nodeCreate a new node inside a Niagara graph
Provide node_type OR class_path. node_type options: Op (requires op_name), FunctionCall (requires function_script), DataInterfaceFunction (requires di_class + function_name), ParameterMapGet, ParameterMapSet, Reroute, Input (requires input_name + input_type). class_path spawns ANY UNiagaraNode subclass (full path, NiagaraNodeXxx, or Xxx), discover via list_niagara_node_types / search_niagara_nodes. Discover op_name via get_niagara_schema_actions and DI function_name via list_niagara_data_interface_functions, never guess.
| Parameter | Type | Required | Description |
|---|---|---|---|
| node_type | string | No | Op | FunctionCall | DataInterfaceFunction | ParameterMapGet | ParameterMapSet | Reroute | Input (or use class_path) |
| class_path | string | No | Any UNiagaraNode subclass (full path, NiagaraNodeXxx, or Xxx), alternative to node_type |
| pos_x | int | No | Graph X position |
| pos_y | int | No | Graph Y position |
| op_name | string | No | (Op) e.g. Numeric::Mul, Numeric::Add, Numeric::Length |
| function_script | string | No | (FunctionCall) UNiagaraScript asset path |
| input_name | string | No | (Input) variable name |
| input_type | string | No | (Input) Niagara type |
| di_class | string | No | (DataInterfaceFunction) DI class name |
| function_name | string | No | (DataInterfaceFunction) DI member function name |
| default | json | No | (Input) the input's default value, e.g. 1.0 or [0,0,1] |
| defaults | json | No | {"Pin": value} input-pin defaults, typed by the pin; an unresolved numeric pin is typed from the value (a number is float) |
| properties | json | No | {"Property": value} node properties by reflection, e.g. a static switch's SwitchTypeData and InputParameterName; pins are rebuilt afterwards |
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
cfa add_niagara_graph_node --system-path /Game/VFX/NS_Fire --module-name MyDI --node-type Op --op-name "Numeric::Mul" --pos-x 100 --pos-y 100
cfa add_niagara_graph_node --script-path /Game/VFX/DI/DI_Foo.DI_Foo --class-path NiagaraNodeStaticSwitchdelete_niagara_graph_nodeDelete a node from a Niagara graph
Provide node_index (ordinal) OR node_id (FGuid from get_niagara_graph_nodes). An index out of range or an unknown id is refused, naming it and the graph's node count.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name |
| script_path | string | No | Standalone script asset path |
| node_index | int | No | Ordinal index |
| node_id | string | No | FGuid string |
cfa delete_niagara_graph_node --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 4build_niagara_graphBuild a whole Niagara graph at once, many nodes + connections in one call
Bulk graph builder (parity with build_material_graph). Spawns every node in 'nodes' (array index = node id), wires every edge in 'connections', then applies per-node pin defaults. The schema validates each wire and inserts conversion nodes like a drag-connect; a refused wire names the side that failed and lists that node's pins. Targets a standalone script (script_path) or a scratch module (system_path + module_name). success is false when any node, wire, default or the auto-compile failed. Node spec: {node_type|class_path, op_name|function_script|di_class+function_name|input_name+input_type, pos_x, pos_y, defaults:{Pin: value}, properties:{Property: value}}. Input nodes take default (the argument's default value). CustomHlsl takes hlsl_code + inputs/outputs [{name,type}]. ParameterMapGet takes get_pins [{name,type,default?}] (default sets a Module.* input's default value, as the Parameters panel does); ParameterMapSet takes set_pins [{name,type}]; Output takes outputs [{name,type}] and retypes the kept Output node. Connections use from_node/to_node (index) or from_node_class/to_node_class for a kept node such as Input/Output. Unconnected Map Get/Set sources are wired to the Input map for you. clear_existing keeps only the Output node and the parameter-map Input; typed function inputs are rebuilt from the document. Unknown op_name values fail with the closest real op names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| script_path | string | No | Standalone UNiagaraScript asset path (or system_path + module_name) |
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| nodes | json | Yes | JSON array of node specs (index = id) |
| connections | json | No | JSON array of {from_node,from_pin,to_node,to_pin} |
| clear_existing | bool | No | Remove existing nodes (keeps Input/Output) before building |
| finalize | bool | No | For a standalone script, Compile+Apply after building so it is immediately usable (inputs resolve, dynamic-input children materialize, dependents pick it up). Set false to batch several builds before one manual compile. Scratch modules compile with their system regardless |
cfa build_niagara_graph --system-path /Game/VFX/NS_Fire --module-name MyMod_0 --clear-existing --nodes '[{"node_type":"ParameterMapGet","get_pins":[{"name":"Particles.Age","type":"float"}]},{"node_type":"CustomHlsl","hlsl_code":"OutV=Age*2;","inputs":[{"name":"Age","type":"float"}],"outputs":[{"name":"OutV","type":"float"}]},{"node_type":"ParameterMapSet","set_pins":[{"name":"Particles.Lifetime","type":"float"}]}]' --connections '[{"from_node_class":"Input","from_pin":"Input","to_node":0,"to_pin":"Source"},{"from_node":0,"from_pin":"Particles.Age","to_node":1,"to_pin":"Age"},{"from_node":1,"from_pin":"OutV","to_node":2,"to_pin":"Particles.Lifetime"},{"from_node":2,"from_pin":"Dest","to_node_class":"Output","to_pin":"OutputMap"}]'add_niagara_custom_hlsl_inputAdd an input pin to a Custom HLSL node
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| pin_name | string | Yes | New input pin name |
| pin_type | string | Yes | Niagara type (float, Vector, int32, etc.) |
cfa add_niagara_custom_hlsl_input --system-path /Game/VFX/NS_Fire --module-name MyDI --pin-name Value --pin-type floatadd_niagara_custom_hlsl_outputAdd an output pin to a Custom HLSL node (a name the node already has is refused)
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| pin_name | string | Yes | New output pin name |
| pin_type | string | Yes | Niagara type |
cfa add_niagara_custom_hlsl_output --system-path /Game/VFX/NS_Fire --module-name MyDI --pin-name Result --pin-type floatrename_niagara_custom_hlsl_pinRename a Custom HLSL pin and the identifier in the HLSL body (whole tokens and Name.member, never comments or other names)
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| old_name | string | Yes | Current pin name |
| new_name | string | Yes | New pin name |
cfa rename_niagara_custom_hlsl_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --old-name Value --new-name Scalarremove_niagara_custom_hlsl_pinRemove a pin from a Custom HLSL node
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| pin_name | string | Yes | Pin to remove |
cfa remove_niagara_custom_hlsl_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --pin-name Valueadd_niagara_map_get_pinAdd a typed output pin to the first ParameterMapGet node in a scratch pad graph
Mirrors clicking + on a Map Get node in the editor. The pin name becomes the parameter handle (e.g. Module.MyParam, Engine.DeltaTime, User.MyParam).
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| parameter_name | string | Yes | Variable name including namespace |
| parameter_type | string | No | Niagara type |
cfa add_niagara_map_get_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --parameter-name Module.Position --parameter-type Vectoradd_niagara_map_set_pinAdd a typed input pin to the first ParameterMapSet node in a scratch pad graph
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| parameter_name | string | Yes | Variable name including namespace |
| parameter_type | string | No | Niagara type |
cfa add_niagara_map_set_pin --system-path /Game/VFX/NS_Fire --module-name MyModule --parameter-name Particles.Velocity --parameter-type Vectoradd_niagara_node_pinAdd a pin to a node that shows a '+' pin on that side (Map Get/Set, Custom HLSL, some ops); others are refused
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| pin_name | string | Yes | New pin name |
| pin_type | string | Yes | Niagara type |
| direction | string | No | input | output |
| node_index | int | No | Target node index |
| node_class | string | No | Target node class |
| node_id | string | No | Target node GUID |
cfa add_niagara_node_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 3 --pin-name Extra --pin-type float --direction outputrename_niagara_node_pinRename a pin on a dynamic-pin node
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| old_name | string | Yes | Current pin name |
| new_name | string | Yes | New pin name |
| node_index | int | No | Target node index |
| node_class | string | No | Target node class |
| node_id | string | No | Target node GUID |
cfa rename_niagara_node_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 3 --old-name Foo --new-name Barremove_niagara_node_pinRemove a dynamic pin from any node in a scratch pad graph
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| pin_name | string | Yes | Pin name to remove |
| node_index | int | No | Target node index |
| node_class | string | No | Target node class |
| node_id | string | No | Target node GUID |
cfa remove_niagara_node_pin --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 2 --pin-name Module.Defaultconnect_niagara_pinsWire one node's output pin to another node's input pin inside a scratch pad graph
Validated via UEdGraphSchema_Niagara::TryCreateConnection. Identify each side via (class|index|id) + pin name. A pin that is not on the node is refused, naming it and listing that node's pins on that side; a refused connection carries the schema's reason.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| from_pin | string | Yes | Source pin name |
| to_pin | string | Yes | Destination pin name |
| from_node_index | int | No | Source node index |
| from_node_class | string | No | Source node class |
| from_node_id | string | No | Source node GUID |
| to_node_index | int | No | Destination node index |
| to_node_class | string | No | Destination node class |
| to_node_id | string | No | Destination node GUID |
cfa connect_niagara_pins --system-path /Game/VFX/NS_Fire --module-name MyDI --from-node-index 2 --from-pin Module.Position --to-node-index 3 --to-pin Array\ interfacedisconnect_niagara_pinsBreak a pin connection in a scratch pad graph
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| script_path | string | No | Standalone UNiagaraScript asset path (instead of system_path + module_name) |
| pin_name | string | Yes | Pin to break |
| node_index | int | No | Target node index |
| node_class | string | No | Target node class |
| node_id | string | No | Target node GUID |
cfa disconnect_niagara_pins --system-path /Game/VFX/NS_Fire --module-name MyDI --node-index 3 --pin-name "Array interface"list_niagara_node_typesEnumerate Niagara node classes available for spawning
| Parameter | Type | Required | Description |
|---|---|---|---|
| filter | string | No | Case-insensitive substring on class name |
cfa list_niagara_node_types --filter Parameterget_niagara_node_type_infoGet pin schema for a node class (class_name) or a script asset (script_path); either one is enough
| Parameter | Type | Required | Description |
|---|---|---|---|
| class_name | string | No | UClass name (short or full) |
| script_path | string | No | UNiagaraScript asset path |
cfa get_niagara_node_type_info --class-name NiagaraNodeParameterMapGetsearch_niagara_functionsFind Niagara function, dynamic input or module scripts by words
Searches the same script list the graph's Functions menu and the stack's dynamic input menu show. Every word must match the name, keywords, description or path (case, spaces and underscores ignored), best matches first. Deprecated scripts are hidden unless include_deprecated. A miss returns the closest names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| search | string | No | Words to match, e.g. "curl noise" |
| filter | string | No | Older name for search |
| usage | string | No | function | dynamic_input | module |
| include_engine | bool | No | Include /Niagara/* engine scripts |
| include_deprecated | bool | No | Include deprecated scripts |
| max_results | int | No | Max returned (the reply says truncated when more matched) |
cfa search_niagara_functions --search "random range" --usage dynamic_inputget_niagara_schema_actionsSearch the full Niagara node palette (the right-click menu) by keyword + category
Wraps UEdGraphSchema_Niagara::GetGraphActions, the exact data the editor's right-click menu uses (ops, function/module/dynamic-input scripts, make/break, convert, DI nodes). Runs against a standalone script (script_path) OR an in-system scratch module (system_path + module_name). Each entry has display_name, category, tooltip, keywords, the spawn descriptor (op_name / function_script / node_type / input_name+type) and full input/output pin schema with Niagara types, feed straight into add_niagara_graph_node.
| Parameter | Type | Required | Description |
|---|---|---|---|
| script_path | string | No | Standalone UNiagaraScript asset path (or use system_path + module_name) |
| system_path | string | No | Niagara System asset path (scratch pad target) |
| emitter_path | string | No | Standalone emitter asset owning the scratch pad (instead of system_path) |
| emitter_name | string | No | With system_path: the scratch pad belongs to this emitter, not the system |
| module_name | string | No | Scratch pad module name (with system_path) |
| filter | string | No | Case-insensitive keyword over display_name/category/keywords/tooltip |
| category | string | No | Case-insensitive category filter (e.g. Math, Vector, Color) |
| max_results | int | No | Max returned entries; total_matched and truncated report the rest |
cfa get_niagara_schema_actions --script-path /Game/VFX/DI/DI_Foo.DI_Foo --filter align --max-results 5
cfa get_niagara_schema_actions --system-path /Game/VFX/NS_Fire --module-name MyDI --category Math --filter multiplydescribe_niagara_typeGeneric type query, handles registered Niagara types AND raw UEnums/UScriptStructs
First tries FNiagaraTypeRegistry; falls back to UEnum/UScriptStruct reflection for script-property enums like ENiagaraScriptLibraryVisibility or any custom project enum.
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | Type name (pin-registered or UEnum/UScriptStruct) |
cfa describe_niagara_type --type Vector
cfa describe_niagara_type --type ENiagaraScriptLibraryVisibilityget_niagara_data_interface_schemaWalk a UNiagaraDataInterface class default object and return its editable property schema
| Parameter | Type | Required | Description |
|---|---|---|---|
| di_class | string | Yes | DI class short or full name |
cfa get_niagara_data_interface_schema --di-class NiagaraDataInterfaceArrayPositionlist_niagara_available_parametersList available Niagara parameters (Engine.*, Particles.*, Emitter.*, User.*)
| Parameter | Type | Required | Description |
|---|---|---|---|
| filter | string | No | Case-insensitive substring on parameter name |
| namespace | string | No | all | engine | particles | emitter | system | user | module | input | output | transient | rapid_iteration (unknown ones are refused) |
| max_results | int | No | Max returned; total_matched and truncated report the rest |
| system_path | string | No | Optional, include system's user parameters |
| module_name | string | No | Optional, scope to a scratch pad module's namespace |
cfa list_niagara_available_parameters --namespace engine --filter Timeget_niagara_module_input_bindingResolve the actual binding of each module input, Default / Local / Linked / Dynamic / Data
Answers 'what is Spawn Count actually driven by?'. Recursively walks dynamic-input children up to max_depth so a single call returns the full binding tree with nested parameter links and literal values. A literal the stack keeps as a rapid-iteration constant reads as mode local with its value; default means neither an override nor a constant is set.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset path |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| module_name | string | Yes | Module display name |
| script_usage | string | Yes | |
| input_filter | string | No | Case-insensitive substring on input name |
| max_depth | int | No | Recursive descent cap for dynamic-input children |
cfa get_niagara_module_input_binding --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnPerFrame --script-usage emitter_updateclear_niagara_module_inputReset a module input to its default (including nested paths like 'Spawn Count.Position Array')
Runs the stack's own 'Reset to Default' on the input: links, dynamic inputs, expressions and local values (rapid-iteration constants included) all go back to the module default. was_overridden says whether it differed from the default. An unknown input is refused with the module's inputs listed. Supports nested path syntax to reach inputs inside dynamic inputs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset path |
| emitter_name | string | No | Emitter name (omit for system_spawn and system_update modules) |
| module_name | string | Yes | Module display name |
| script_usage | string | Yes | |
| input_name | string | Yes | Input name (supports 'Parent.Child' nesting) |
cfa clear_niagara_module_input --system-path /Game/VFX/NS_Fire --emitter-name Sparks --module-name SpawnPerFrame --script-usage emitter_update --input-name "Spawn Count.Position Array"find_niagara_scratch_pad_usageFind where a scratch pad script is referenced across all emitter/system graphs
Scans every emitter Ă— {spawn, update, particle_spawn, particle_update} + system_spawn + system_update graphs for UNiagaraNodeFunctionCall nodes whose FunctionScript matches. Returns usage sites as {emitter, script_usage, function_name, node_id, is_dynamic_input}.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset path |
| module_name | string | Yes | Scratch pad module name to hunt for |
cfa find_niagara_scratch_pad_usage --system-path /Game/VFX/NS_Fire --module-name GetDataInterfaceLengthresolve_niagara_built_in_dynamic_inputDiscover built-in dynamic-input script paths via AssetRegistry (replaces hardcoded guesses)
Replaces guessed paths like /Niagara/Modules/DynamicInputs/UniformRangedFloat (which vary across UE versions) with a live AssetRegistry scan. Returns UNiagaraScript assets with Usage=DynamicInput matching the filter, with total_matched and truncated when max_results cut the list. An exact_name that matches nothing is refused with the closest names.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name_filter | string | No | Case-insensitive substring |
| exact_name | string | No | Return only the asset whose AssetName equals this |
| max_results | int | No | Max returned |
cfa resolve_niagara_built_in_dynamic_input --name-filter Random --max-results 10list_niagara_data_interface_functionsEnumerate member functions on a Niagara data interface class
Returns the functions the editor's right-click 'Functions' submenu shows on a DI pin, built-in DI members like Array.Length, Array.Get, Array.Add. These aren't UNiagaraScript assets so search_niagara_functions won't find them. Pass the result as function_name to add_niagara_graph_node(node_type='DataInterfaceFunction').
| Parameter | Type | Required | Description |
|---|---|---|---|
| di_class | string | Yes | Short ('NiagaraDataInterfaceArrayPosition') or full path |
| filter | string | No | Case-insensitive substring on function name |
| include_pins | bool | No | Include input/output pin schema |
cfa list_niagara_data_interface_functions --di-class NiagaraDataInterfaceArrayPosition --filter Lengthget_niagara_particle_dataRead live particle attributes (the Attribute Spreadsheet) from a running Niagara system
Captures one frame of a running Niagara system through the engine's sim cache, the same capture the Niagara editor's Attribute Spreadsheet uses, and returns it column-oriented per emitter: columns (Position.X, Color.R, Age...), rows for particles [offset, offset+max_results), and stats with min, max and mean per component over EVERY particle, not just the returned rows. verdict is fail when any attribute holds NaN or infinite values (issues names them). The instance comes from the open Niagara editor preview, the level or the PIE world (source, actor_label and matches say which was read). It must be running: a paused, not-yet-spawned or completed instance is refused with how to resume it. GPU emitters are read back synchronously. Systems with lightweight (stateless) emitters are refused because the engine's capture crashes on them; get_niagara_particle_stats still covers those. Pass --attributes to capture only what you need, which also keeps the output small. Positions are world space unless --world-space=false.
cfa get_niagara_particle_data --system-path /Game/VFX/NS_Fire
cfa get_niagara_particle_data --system-path /Game/VFX/NS_Fire --emitter-name Sparks --attributes Position,Velocity --max-results 5
cfa get_niagara_particle_data --actor-name FxTest --source level --attributes Color --stats=falseget_niagara_runtime_parametersRead the live parameter values a running Niagara instance is simulating with
Lists the parameter stores of a running Niagara instance as compact rows {n: name, t: type, v: value, src: store}. --scope user reads the component's user parameter overrides (world positions for Position types), engine reads the instance parameters (Engine.Owner.Position and friends), system reads the system spawn/update script contexts, emitter reads each emitter's particle script contexts and GPU context, constants keeps only Constants.* (the rapid-iteration values the VM actually runs), and all (default) reads everything with duplicates removed. Data interfaces report their class and object parameters their path. The instance is found the same way get_niagara_particle_data finds it.
cfa get_niagara_runtime_parameters --system-path /Game/VFX/NS_Fire --scope user
cfa get_niagara_runtime_parameters --actor-name FxTest --source level --scope constants --emitter-name Sparks
cfa get_niagara_runtime_parameters --system-path /Game/VFX/NS_Fire --filter SpawnRateget_niagara_script_statsVM op counts and GPU instruction counts for a Niagara system's scripts
Reports each script of a system (system spawn/update plus every emitter's scripts) as {usage, emitter, status, op_count, stale}, and for GPU emitters the gpu_compute script's instruction count per simulation stage on the platform the editor is running. op_count is computed only by a real compile and is not saved with the asset, so a script loaded from disk or served from the DDC reports op_count null with stale:true; compile_niagara_system --force fills it.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| emitter_name | string | No | Only this emitter's scripts; system scripts are always listed |
cfa get_niagara_script_stats --system-path /Game/VFX/NS_Fire
cfa get_niagara_script_stats --system-path /Game/VFX/NS_Fire --emitter-name Sparksget_niagara_generated_codeRead the HLSL, VM assembly or GPU HLSL a Niagara script compiled to
With no script_usage, grep or function it returns an availability table: characters of hlsl, assembly and gpu text per script (under 1 KB). Then read one script: --function extracts one module's generated function body by name (e.g. SolveForcesAndVelocity; without --script-usage the first script defining it is used), --grep returns matching lines with --context lines around them (wrap it in slashes, /like.*this/, for a regular expression; --offset skips matches), and otherwise --offset/--max-lines page through the text. Lines are numbered, grep -n style. hlsl and assembly are not saved with the asset and exist only after a real compile in this editor session (compile_niagara_system --force); kind gpu is saved and always readable for GPU emitters.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| emitter_name | string | No | Emitter owning the script; optional with one emitter, ignored for system scripts |
| script_usage | string | No | system_spawn, system_update, particle_spawn, particle_update, particle_event or gpu_compute |
| kind | string | No | hlsl (CPU translation), assembly (VM) or gpu (GPU compute HLSL) |
| grep | string | No | Only lines containing this, case insensitive; /regex/ for a regular expression |
| context | int | No | Lines of context around each grep match |
| function | string | No | Module or function name whose generated body to return |
| offset | int | No | Grep: matches to skip. Otherwise: first line, 0 based |
| max_lines | int | No | Maximum lines to return (at most 2000) |
cfa get_niagara_generated_code --system-path /Game/VFX/NS_Fire
cfa get_niagara_generated_code --system-path /Game/VFX/NS_Fire --emitter-name Sparks --function SolveForcesAndVelocity
cfa get_niagara_generated_code --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage particle_update --grep Velocity
cfa get_niagara_generated_code --system-path /Game/VFX/NS_Gpu --kind gpu --grep "/Particles_Position.*=/"set_niagara_debug_playbackPause, step, loop or slow down every Niagara effect (the Niagara Debugger toolbar)
Drives the Niagara Debugger's playback toolbar without opening its window, for every world the editor runs. --mode play, pause, loop (effects restart when they finish, or every --loop-time seconds) or step (run one frame, then hold paused, like the toolbar's Step button). --rate sets the speed, above 0 and at most 10 (0.25 is quarter speed, 1 is normal). Custom playback only applies while the Debug HUD gate is open, so this opens it; that alone draws nothing on screen. The result reads each world's mode and rate back. A world switches mode on its next tick, so worlds[].mode can still show the old mode right after a change; get_niagara_debug_state verifies it. A placed effect only moves while its world ticks: in the editor that needs a Realtime level viewport (focus_viewport turns it on) or Play In Editor, and world_ticking says which.
| Parameter | Type | Required | Description |
|---|---|---|---|
| mode | string | No | play, pause, loop or step (omit to keep the current mode) |
| rate | float | No | Speed above 0 and at most 10; 1 is normal (omit to keep the current rate) |
| loop_time | float | No | With --mode loop: restart every effect each this many seconds; 0 turns the timer off |
cfa set_niagara_debug_playback --mode pause
cfa set_niagara_debug_playback --mode step
cfa set_niagara_debug_playback --mode play --rate 0.25
cfa set_niagara_debug_playback --mode loop --loop-time 2set_niagara_debug_hudConfigure the Niagara Debug HUD: presets, filters and any HUD setting by name
Sets the Niagara Debug HUD, the in-viewport overlay the Niagara Debugger draws, without opening the Debugger window. --enabled turns it on or off. --preset component is the Debug button of a Niagara component's Details panel: it filters the HUD to that component, its system and its actor and shows in-world system info (--target is the actor, --component-name picks one of several components). --preset system filters to one system (--target is a System path, or an actor) and turns the overview on. --preset validate checks system and particle buffers for NaN every frame and logs each bad value to the Output Log; add --target to narrow it. --preset off turns the HUD off. --properties sets any HUD settings field by its UPROPERTY name through reflection, e.g. {"bOverviewEnabled": true, "OverviewMode": "Performance", "SystemFilter": "NS_Fire*"}; get_niagara_debug_state --fields "*" lists every field with its value, and a misspelled name suggests the closest. Properties apply after the preset, and a failed write changes nothing. On UE 5.8 setting a filter also turns on the master switch bFiltersEnabled, which the engine's own Debug button leaves off. Settings are saved to your per-project editor settings, as the Debugger window does. The result lists every changed field with its value read back, hud_active, and warnings when the HUD would draw nothing. The HUD draws in viewports that render; --open-debugger also opens the Niagara Debugger window on its Debug HUD tab.
| Parameter | Type | Required | Description |
|---|---|---|---|
| enabled | bool | No | Turn the HUD on or off (every preset except off turns it on) |
| preset | string | No | component, system, validate or off |
| target | string | No | Actor label or name (component); System path or actor (system); either or neither (validate) |
| component_name | string | No | Which Niagara component on the target actor when it has several (default: the first) |
| properties | json | No | JSON object of HUD settings field -> value, applied after the preset |
| open_debugger | bool | No | Also open the Niagara Debugger window on its Debug HUD tab |
cfa set_niagara_debug_hud --preset component --target "NS_Fire_1"
cfa set_niagara_debug_hud --preset system --target /Game/VFX/NS_Explosion
cfa set_niagara_debug_hud --preset validate
cfa set_niagara_debug_hud --properties '{"bOverviewEnabled": true, "OverviewMode": "Performance"}'
cfa set_niagara_debug_hud --preset offget_niagara_debug_stateRead back the Niagara Debugger's playback and HUD state, with a verdict
The verification counterpart of set_niagara_debug_playback and set_niagara_debug_hud. Reads the playback settings (mode, effective rate, loop time, and whether the HUD gate lets them apply), each world's live Niagara mode and rate, whether a level world is ticking, the Debug HUD summary (active, overview and its mode, system verbosity, validation, particle attributes, active filters) and whether the Debugger window is open. verdict is pass, pass_with_warnings or fail, and each warning names its cause: playback ignored because the HUD is off, a world that never got the current mode, no ticking world, a HUD that is on but draws nothing, filters ignored by the UE 5.8 master switch. --fields lists the HUD settings fields whose name contains the text, with their values ("*" for all): the names set_niagara_debug_hud --properties takes.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fields | string | No | Also list HUD settings fields whose name contains this text (* lists them all) |
| max_results | int | No | Cap on listed worlds and fields |
cfa get_niagara_debug_state
cfa get_niagara_debug_state --fields Filter
cfa get_niagara_debug_state --fields "*" --max-results 100capture_niagara_outlinerCapture the Niagara FX Outliner: every live system and component, with state and timings
Takes the capture the Niagara Debugger's FX Outliner tab takes, through the editor's own debugger client: every world running Niagara (editor, Play In Editor, asset previews), each system asset in it, and each component instance with its execution state (plus the requested state when they differ), particle count, scalability cull reason, cull proxy, pooling, solo ticking and, with --include-emitters, each emitter's sim target, state and particle count. --delay-frames 0 (default) captures now and returns the data. --delay-frames N waits N frames while gathering average and max game and render thread times in microseconds per world, system and component, and returns a capture_id with state pending: collect it with get_niagara_outliner_capture. Timings only accumulate while the world ticks (a Realtime viewport or Play In Editor). The client runs one capture at a time and drops a request made while another is pending, which is reported as an error. --world, --system-filter and --max-results keep the answer small; the result reports total_components and truncated.
cfa capture_niagara_outliner
cfa capture_niagara_outliner --system-filter NS_Fire --include-emitters
cfa capture_niagara_outliner --delay-frames 60 --world UEDPIEget_niagara_outliner_captureCollect a delayed FX Outliner capture, or re-slice the latest one
Returns the capture that capture_niagara_outliner started: state pending with frames_left while it gathers, the data once it is done, or an error when the debugger client dropped it because another capture was pending. Only the latest capture is kept, and it can be read again with a different --world, --system-filter, --include-emitters or --max-results to page through a large scene.
cfa get_niagara_outliner_capture --capture-id 3
cfa get_niagara_outliner_capture --system-filter NS_Fire --include-emittersget_niagara_simulation_optionsRead the Niagara editor's Simulation menu options and playback speeds
Reads the options under the Niagara editor toolbar's Simulation menu: auto_play, reset_on_change, resimulate_when_paused, reset_dependent_systems (emitter editors only) and auto_compile, plus the playback speeds the timeline's speed menu offers. These are per-user editor settings, shared by every Niagara editor.
cfa get_niagara_simulation_optionsset_niagara_simulation_optionsSet the Niagara editor's Simulation menu options (auto play, reset on change...)
Sets any of the Niagara editor's Simulation menu options with the same setters the menu calls, each of which saves the per-user Niagara editor config. Only the options you pass change. Returns every option read back plus 'changed', the ones that actually moved. Nothing here touches an asset, so there is nothing to undo.
| Parameter | Type | Required | Description |
|---|---|---|---|
| auto_play | bool | No | Start simulating when an editor opens and when its data changes |
| reset_on_change | bool | No | Reset the simulation when a value changes |
| resimulate_when_paused | bool | No | Rerun to the current time when something changes while paused |
| reset_dependent_systems | bool | No | Emitter editors: also reset components using the edited emitter |
| auto_compile | bool | No | Compile automatically after edits |
cfa set_niagara_simulation_options --auto-play=false
cfa set_niagara_simulation_options --reset-on-change=true --resimulate-when-paused=trueniagara_preview_playbackPlay, pause, step, seek or read the timeline of an open Niagara system editor
Drives the timeline of a system open in the Niagara editor. --action play, pause, toggle, step_forward, step_backward, to_start and to_end run through the toolkit's own command list, the path the timeline's buttons and shortcuts take. --action seek needs --time in seconds. --speed and --loop apply before the action, so '--action play --speed 0.25' plays at quarter speed; loop is the Niagara timeline's shared loop setting. --action status changes nothing. Returns status (playing, stopped...), time, speed, the playback range in seconds and loop, read back. CFA attaches to a Niagara timeline when its editor opens; for an editor that was already open before that, seek, speed and the exact status are unavailable (time falls back to the preview's age) until the system is closed and reopened. The system must be open: cfa open_asset --asset-path <system>.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System open in the Niagara editor |
| action | string | Yes | play, pause, toggle, step_forward, step_backward, to_start, to_end, seek or status |
| time | float | No | action=seek: time in seconds |
| speed | float | No | Playback speed multiplier; negative plays backwards (omit to keep) |
| loop | bool | No | Loop the timeline or play once (omit to keep) |
cfa niagara_preview_playback --system-path /Game/VFX/NS_Fire --action play
cfa niagara_preview_playback --system-path /Game/VFX/NS_Fire --action seek --time 1.5
cfa niagara_preview_playback --system-path /Game/VFX/NS_Fire --action play --speed 0.25 --loop=false
cfa niagara_preview_playback --system-path /Game/VFX/NS_Fire --action statusprofile_niagara_systemMeasure a running Niagara system's game thread, render thread, GPU and per-script cost
Profiles one running Niagara component over --frames editor frames (default 60) without freezing the editor. The first call attaches the engine's particle perf stats listener and a Niagara GPU profiler listener and returns complete=false; run the same command again until complete=true (a sample left uncollected for 2 minutes is dropped). --source preview (the default) profiles the system editor's preview; level or pie profile a component in the level or the Play In Editor world (--actor-name picks one; 'matches' reports how many ran the system); auto, the default once --actor-name is given, tries PIE, then the level (and the preview first when no actor is named). The result gives gt_us, rt_us and gpu_us (average per frame in microseconds, with *_max_us), frames_active (frames the system actually ticked on each thread) and instances. --per-script (preview only) also turns on the editor's Performance mode for the sample, which recompiles the system with stat scopes, and reports scripts: [{emitter, usage, ms}] for system/emitter spawn and update, particle spawn and update, and GPU stages; the mode is turned back off afterwards if CFA turned it on. verdict compares the cost with the project's global FX budget (fx.Budget.*): over half of it warns, over all of it fails, and a system that never ticked fails. GPU time needs a GPU simulation and fx.NiagaraGpuProfiling.Enabled. --restart discards a sample in progress; a new --frames or --per-script only applies to a new sample.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System to profile |
| actor_name | string | No | Outliner label or name of the actor owning the component, in the level or PIE world |
| source | string | No | preview (default without actor_name), level, pie or auto (default with actor_name) |
| frames | int | No | Frames to sample, 1-600 |
| per_script | bool | No | Also report per-script CPU time (source=preview; recompiles the system once) |
| restart | bool | No | Discard a sample in progress for this component and start again |
cfa profile_niagara_system --system-path /Game/VFX/NS_Fire
cfa profile_niagara_system --system-path /Game/VFX/NS_Fire --frames 120 --per-script
cfa profile_niagara_system --system-path /Game/VFX/NS_Fire --source level --actor-name "NS_Fire_2"set_niagara_fixed_boundsSet a Niagara system's or emitter's fixed bounds from the preview or an explicit box
Sets fixed bounds, which keep an effect from being culled while visible and let GPU emitters render inside a real box. --mode from_preview (default) measures the running preview exactly as the editor's Set Fixed Bounds menu does: --target system runs the menu's own Set Fixed Bounds (System) entry, --target emitter measures that emitter's live particles (GPU emitters are read back) without touching the stack selection. The system editor must be open with the effect playing. When the system already has fixed bounds the preview can only report that old box, so the first call turns them off, restarts the preview and returns complete=false; play the effect through and run it again. --mode explicit takes --min and --max as [x,y,z] in local space. --padding grows the box on every side. The asset is saved and the box comes back read back; get_niagara_bounds verifies it.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| target | string | No | system (default) or emitter |
| emitter_name | string | No | target=emitter: emitter display name |
| mode | string | No | from_preview (default) or explicit |
| min | json | No | mode=explicit: box minimum [x, y, z] |
| max | json | No | mode=explicit: box maximum [x, y, z] |
| padding | float | No | Units to grow the box by on every side (default 0) |
cfa set_niagara_fixed_bounds --system-path /Game/VFX/NS_Fire
cfa set_niagara_fixed_bounds --system-path /Game/VFX/NS_Fire --target emitter --emitter-name Sparks --padding 20
cfa set_niagara_fixed_bounds --system-path /Game/VFX/NS_Fire --mode explicit --min "[-200,-200,0]" --max "[200,200,600]"get_niagara_boundsRead a Niagara system's fixed and live bounds, with a verdict
Reports whether the system has fixed bounds and the box, and for each emitter its sim target, bounds mode (dynamic, fixed or programmable) and fixed box. When the system is open in the Niagara editor it adds the live preview's bounds and particle counts. verdict fails when a GPU emitter has dynamic bounds and the system has none fixed (Epic's own GPUSimsMissingFixedBounds check: it would render inside a default box and cull wrongly) and warns on a box with no volume. The verification counterpart of set_niagara_fixed_bounds.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| max_results | int | No | Emitters to report; truncation is reported |
cfa get_niagara_bounds --system-path /Game/VFX/NS_Fireget_niagara_baker_settingsRead a Niagara system's Baker settings, outputs and available output classes
Reads the system's Baker settings through reflection as flat path -> value pairs (StartSeconds, DurationSeconds, FramesPerSecond, FramesPerDimension, CameraSettings[n]..., BakeQualityLevel...), with --filter and --max-results and the truncation reported in _summary. 'outputs' lists each baker output with its class and properties, and 'output_classes' the classes add_output accepts. A system that never opened the Baker tab has no settings object; the defaults are shown and exists=false, and nothing is created.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| filter | string | No | Only properties whose path contains this |
| max_results | int | No | Properties to return; truncation is reported |
cfa get_niagara_baker_settings --system-path /Game/VFX/NS_Fire
cfa get_niagara_baker_settings --system-path /Game/VFX/NS_Fire --filter cameraset_niagara_baker_settingsEdit a Niagara system's Baker settings and outputs
Writes Baker settings through the reflection property writer: --properties maps a dotted path to a value, e.g. {"DurationSeconds": 2, "FramesPerDimension": {"X": 4, "Y": 4}, "Outputs[0].OutputName": "Flipbook"}. --add-output appends an output of a baker output class (get_niagara_baker_settings lists them) and --remove-output removes one by index, as the Baker tab's buttons do; removal applies first. Each written path comes back with its value read back, or its own error. Creates the settings when the system has none, as opening the Baker tab does, and saves the asset. Running the bake itself is not exposed by the engine outside the Baker tab.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| properties | json | No | JSON object of property path -> value |
| add_output | string | No | Baker output class to append, e.g. NiagaraBakerOutputTexture2D |
| remove_output | int | No | Index of the output to remove (-1 = none) |
cfa set_niagara_baker_settings --system-path /Game/VFX/NS_Fire --properties '{"DurationSeconds": 2, "FramesPerSecond": 30}'
cfa set_niagara_baker_settings --system-path /Game/VFX/NS_Fire --add-output NiagaraBakerOutputTexture2D
cfa set_niagara_baker_settings --system-path /Game/VFX/NS_Fire --remove-output 1get_niagara_scalabilityRead a Niagara system's effect type and resolved scalability, per quality level
Reports the system's effect type, allowed_by_scalability, and for the system and each emitter the resolved scalability settings (only values that differ from the defaults) plus each scalability override. resolved and allowed_by_scalability are for the current quality level and device profile. --quality-level (an index or a name such as Low or Epic, from the project's Niagara quality levels) sets the level that enabled_at_level and applies_at_level test each platform set against, so one call shows what a lower level turns off. quality_level lists the level names and the current one.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| quality_level | string | No | Level to test platform sets against: index or name (default: current) |
| max_results | int | No | Emitters to report; truncation is reported |
cfa get_niagara_scalability --system-path /Game/VFX/NS_Fire
cfa get_niagara_scalability --system-path /Game/VFX/NS_Fire --quality-level Lowset_niagara_effect_typeAssign or clear a Niagara system's Effect Type
Sets the system's Effect Type through UNiagaraSystem::SetEffectType, which re-resolves scalability and reinitializes running instances, then notifies the details panel. --effect-type none clears it. Saves the asset and returns the effect type and resolved scalability read back.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| effect_type | string | Yes | Niagara Effect Type asset path, or none |
cfa set_niagara_effect_type --system-path /Game/VFX/NS_Fire --effect-type /Game/VFX/ET_Ambient
cfa set_niagara_effect_type --system-path /Game/VFX/NS_Fire --effect-type nonepreview_niagara_quality_levelPreview a Niagara quality level in one system's editor or for every effect
--scope editor (default) switches the open system's Niagara editor into its Scalability mode and sets the preview quality level there, which only that preview uses; --level clear leaves Scalability mode. --scope global overrides the quality level of every Niagara effect in the editor, as fx.Niagara.SetOverrideQualityLevel does, until cleared with --level clear. --level takes an index or a quality level name. Returns the level in effect, read back.
| Parameter | Type | Required | Description |
|---|---|---|---|
| level | string | Yes | Quality level index or name, or clear |
| scope | string | No | editor (default) or global |
| system_path | string | No | scope=editor: Niagara System open in the Niagara editor |
cfa preview_niagara_quality_level --system-path /Game/VFX/NS_Fire --level Low
cfa preview_niagara_quality_level --scope global --level 0
cfa preview_niagara_quality_level --scope global --level clearcapture_niagara_thumbnailCapture an open Niagara system's thumbnail from its preview viewport
Runs the Niagara editor toolbar's Thumbnail button for a system open in the editor, bringing the editor to the front first because the viewport captures on its next draw. That makes it two calls: the first returns captured=false, the next confirms the new thumbnail and saves the asset (--save=false to skip). A request that never drew within 10 seconds is sent again.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System open in the Niagara editor |
| save | bool | No | Save the asset once the thumbnail is in |
cfa capture_niagara_thumbnail --system-path /Game/VFX/NS_Fireremove_niagara_simulation_stageRemove a simulation stage and its modules from an emitter
Removes a simulation stage and every module in it, the way the stack's delete button does. The system's Niagara editor, if open, is closed for the edit and reopened (reopened_editor). List stages with get_niagara_event_handlers.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| emitter_name | string | Yes | Emitter that owns the stage |
| stage | string | Yes | Stage name or index (simulation_stage:<name> also works) |
cfa remove_niagara_simulation_stage --system-path /Game/VFX/NS_Fluid --emitter-name Grid --stage Swirlremove_niagara_event_handlerRemove an event handler and its modules from an emitter
Removes an event handler and every module in it, the way the stack's delete button does; running instances are torn down first. List handlers with get_niagara_event_handlers.
| Parameter | Type | Required | Description |
|---|---|---|---|
| system_path | string | Yes | Niagara System asset |
| emitter_name | string | Yes | Emitter that owns the handler |
| handler | string | Yes | Handler index or source event name (event:<index> also works) |
cfa remove_niagara_event_handler --system-path /Game/VFX/NS_Fire --emitter-name Sparks --handler 0add_niagara_set_parameters_moduleAdd a Set Parameters module (write attributes directly) to a Niagara stage
Adds the stack's Set Parameters module to any stage with the entries you list, each with its namespace (Particles.Scale, Particles.Hue, Emitter.Speed, User.Tint), a type and an optional starting value. The type may be left out for a known attribute (Particles.Position, Particles.Color...), a User parameter, or an attribute the emitter's last compile already has. This is how a new particle attribute is created, e.g. a NiagaraID RibbonID for a ribbon renderer. Change entry values later with set_niagara_stack_value --input-name <entry name>.
cfa add_niagara_set_parameters_module --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage particle_spawn --parameters '[{"name":"Particles.Hue","type":"float","value":0.3},{"name":"Particles.Color","value":[1,0.2,0.1,1]}]'add_niagara_set_parameter_entryAdd one entry to a Set Parameters module
Adds one entry to an existing Set Parameters module. A name already in the module is refused (change its value with set_niagara_stack_value, or remove it first to change its type).
cfa add_niagara_set_parameter_entry --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage particle_spawn --module-name SetVariables_1 --name Particles.Spin --type float --value 2remove_niagara_set_parameter_entryRemove one entry from a Set Parameters module
Removes one entry from a Set Parameters module. A wrong name lists the module's entries.
cfa remove_niagara_set_parameter_entry --system-path /Game/VFX/NS_Fire --emitter-name Sparks --script-usage particle_spawn --module-name SetVariables_1 --name Particles.Spin