Skip to main content
Glama

set_niagara_renderer_properties

DestructiveIdempotent

Set Niagara renderer properties (Sprite/Mesh/Ribbon/Light/Decal) by reflection, applying supplied fields and triggering system compile and save.

Instructions

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

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
enabledNoOptional bool: base bIsEnabled (also accepted as renderer_enabled).
alignmentNoOptional enum name (Sprite): Alignment (e.g. "Unaligned"/"VelocityAligned"/"CustomAlignment"/"Automatic").
color_addNoOptional {x,y,z} or [x,y,z] (Light): ColorAdd (FVector3f RGB shift).
sort_modeNoOptional enum name (Sprite/Mesh): SortMode (e.g. "None"/"ViewDepth"/"ViewDistance"/"CustomAscending"/"CustomDescending").
facing_modeNoOptional enum name (Sprite ENiagaraSpriteFacingMode or Mesh ENiagaraMeshFacingMode, resolved by class): FacingMode.
locked_axisNoOptional [x,y,z] or {X,Y,Z} (Mesh): LockedAxis.
system_pathYesAsset path of the Niagara System.
cast_shadowsNoOptional bool (Sprite): bCastShadows.
emitter_nameYesName of the emitter handle.
radius_scaleNoOptional float (Light, ClampMin=0): RadiusScale.
diffuse_scaleNoOptional float (Light, ClampMin=0): DiffuseScale.
renderer_indexYes0-based index of the renderer (use get_niagara_emitter_renderers).
specular_scaleNoOptional float (Light, ClampMin=0): SpecularScale.
sub_image_sizeNoOptional [x,y] or {X,Y} (Sprite/Mesh): SubImageSize.
macro_uv_radiusNoOptional float (Sprite): MacroUVRadius.
sort_order_hintNoOptional int: base SortOrderHint.
default_exponentNoOptional float (Light, ClampMin=0): DefaultExponent (used when use_inverse_squared_falloff=false).
allow_mega_lightsNoOptional bool (Light): bAllowMegaLights.
decal_source_modeNoOptional enum name/int (Decal): SourceMode ("Particles"/"Emitter"); fires PostEditChangeProperty so UpdateSourceModeDerivates runs.
mesh_bounds_scaleNoOptional [x,y,z] or {X,Y,Z} (Mesh): MeshBoundsScale.
pivot_in_uv_spaceNoOptional [x,y] or {X,Y} (Sprite): PivotInUVSpace.
override_materialsNoOptional bool (Mesh): bOverrideMaterials.
renderer_visibilityNoOptional int (Sprite): RendererVisibility tag value.
affects_translucencyNoOptional bool (Light): bAffectsTranslucency.
allow_in_cull_proxiesNoOptional bool: base bAllowInCullProxies.
motion_vector_settingNoOptional enum name: base MotionVectorSetting (e.g. "AutoDetect"/"Precise"/"Disable").
decal_screen_size_fadeNoOptional float (Decal): DecalScreenSizeFade.
inverse_exposure_blendNoOptional float (Light): InverseExposureBlend.
alpha_scales_brightnessNoOptional bool (Light): bAlphaScalesBrightness.
mega_lights_cast_shadowsNoOptional bool (Light): bMegaLightsCastShadows.
use_inverse_squared_falloffNoOptional bool (Light): bUseInverseSquaredFalloff.
override_inverse_exposure_blendNoOptional bool (Light): bOverrideInverseExposureBlend.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.2.0
    • changedInput schema / required
      Previous value: -[
      -  "emitter_name",
      -  "renderer_index"
      -]New value: +[
      +  "system_path",
      +  "emitter_name",
      +  "renderer_index"
      +]
  2. First observedv1.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry destructive=true, idempotent=true, readOnly=false, and the description confirms and enriches: writes go to the LIVE concrete renderer, values are merged with ClampMin/Max, a system compile and save are triggered, enum writes fire PostEditChangeProperty, and inapplicable keys surface via not_applicable rather than being swallowed. This is well beyond what the annotations declare.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core operation, then the mechanism, caveats, and return shape. Dense but information-rich; a couple of run-on clauses could be split, yet little is wasted for a 32-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description supplies the full return contract (system_path, renderer_class, applied, not_applicable, post_edit_fired, properties dump, save_error). For a high-parameter mutation tool this leaves nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per-parameter meaning is already documented, but the description adds real semantics: values are clamped via meta, enum resolution is by concrete renderer class, and unknown keys land in not_applicable. That is genuine added meaning over the schema's per-field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: authoring renderer UPROPERTYs on a Niagara renderer of a named type set (Sprite/Mesh/Ribbon/Light/Decal). It distinguishes itself from siblings by explicitly handing the decal Material case to set_niagara_decal_renderer_material, so an agent can separate it from set_niagara_renderer_material and set_niagara_mesh_renderer_mesh.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (set_niagara_decal_renderer_material) and the exact condition selecting it (decal Material object-ref). It also scopes what is covered here (Light/Decal scalars, base renderer_enabled) and points to get_niagara_emitter_renderers for the renderer_index, giving both when and how.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools