Skip to content

VfxSystemDefinitionData

Inheritance 1 ancestor

Class Documentation

Edit documentation

The definition of a complete particle system ("troy") - the root object that a VFX entry in a bin file deserializes into. A system is a container of emitters plus system-wide settings: visibility/culling, audio hooks, HUD-layer placement, an optional dynamic light, and a set of behavior flags.

The same in-memory object is also produced by the legacy .troybin loader, so both content pipelines (modern bin and legacy troybin) feed the exact same structure - the bin format simply exposes more of it (several Flags bits and properties have no legacy troybin equivalent).

Emitters are split into two lists, ComplexEmitterDefinitionData and SimpleEmitterDefinitionData; complex emitters get the full feature set (e.g. emission-mesh geometry resolution), simple ones are a lightweight path.

Properties

0x8b301739

Pointer<0x75e34c40> = null
14.18
Edit documentation

Pointer to an unnamed table type (0x75e34c40) containing a list of (event name hash → map) entries - an event-to-data lookup table.

0x9836cd87

U8 = 5
14.15
Edit documentation

Unknown byte, default 5. Purpose not yet identified.

0xf97b1289

Pointer<0x7fb92f53> = null
14.10
Edit documentation

Pointer to an unnamed embedded type (0x7fb92f53) holding four floats (defaults 0, FLT_MAX, 1, 0.1). Purpose not yet identified.

ClockToUse

U8 = 0
Edit documentation

Selects which game clock drives the system's simulation time.

HudLayerAspect

F32 = 1.3333333730697632
Edit documentation

Aspect ratio of the HUD-layer virtual canvas. Default 4/3 (≈1.333). See HudLayerDimension.

PointLight

Pointer<0x83456589> = null
14.13
Edit documentation

Optional dynamic light emitted by the system. The light definition carries a type, an optional lifetime (default 5 s), a color track, an intensity-scale track (default 1), a radius track (default 500), an HDR scale (default 5) and an impact setting. Instantiated together with the emitters and updated every simulation step.

assetCategory

String = "fx"
Removed in 14.15
Edit documentation

Legacy asset-category string (default fx). Removed from current builds.

assetRemappingTable

List<VfxAssetRemap> = []
Edit documentation

List of asset remap entries that substitute assets referenced by the system's emitters.

audioParameterFlexID

I32 = -1
Edit documentation

Flex ID used to drive an audio parameter (RTPC) for this system's sounds. -1 (default) disables it.

audioParameterTimeScaledDuration

F32 = 0
Edit documentation

Duration used to derive a time-scaled audio parameter for the system's sounds, paired with AudioParameterFlexId.

buildUpTime

F32 = 0
Edit documentation

When the system becomes visible, its simulation is fast-forwarded by this many seconds so a long-running ambient effect appears fully built up instead of restarting from empty.

complexEmitterDefinitionData

List<VfxEmitterDefinitionData> = []
Edit documentation

The system's complex emitters. Complex emitters support the full emitter feature set - notably emission-mesh geometry (EmissionMeshName) is only resolved for emitters in this list.

drawingLayer

U8 = 0
Edit documentation

Which layer the system renders in. 0 (default) is the normal world layer; 1 renders on the HUD layer - the system skips world frustum culling and is placed on a virtual canvas defined by HudLayerDimension / HudLayerAspect.

flags

U16 = 212
Edit documentation

Bitfield of system behavior flags. The value is used verbatim as serialized - the game never adds bits at runtime. Default 212 (0xD4).

Bit Name (legacy troybin key) Effect
0x0001 SimulateWhileOffScreen Keep simulating while culled off-screen instead of pausing.
0x0002 PersistThruDeath Don't kill the instance when its owner dies.
0x0004 PersistThruRevive Don't kill the instance when its owner revives. Default on.
0x0008 SimulateOncePerFrame One variable-timestep simulation step per frame instead of fixed-timestep substeps.
0x0010 (bin only) On deactivation, stop persistent sound/voice-over immediately instead of letting them run out. Default on (troybin effects never set it, so their persistent audio finishes naturally).
0x0020 SoundsPlayWhileOffScreen Persistent sounds keep playing while the system is hidden (otherwise they are stopped on hide).
0x0040 SimulateEveryFrame Force at least one simulation step even on frames where the fixed-rate accumulator would yield none. Default on (bin); legacy default off.
0x0080 KeepOrientationAfterSpellCast Written by the legacy loader (default on) but vestigial - no consumer exists in current builds.
0x0100 (bin only) Analytic drag motion: particle position is driven in closed form toward the fixed displacement BirthVelocity / Drag (the exponential-drag asymptote) instead of numeric integration. Frame-rate independent with an exact end position - used for UI/HUD particles.
0x0200 (bin only) HUD layer: take the pixel size from the hosting UI element (UiElementEffectData) instead of HudLayerDimension / HudLayerAspect.
0x0400 (bin only) Scale by bound object size: every update, multiply particle scale by the owner unit's current model scale (including size modifiers and death shrink). With a target attachment, the scale can instead lerp by 2D distance to the target.
0x0800 (bin only) Opt in to aggressive low-spec culling: on very low EffectsQuality (when the server-side feature is enabled), all emitters except Importance 3 (gameplay-critical) and 4 (low-quality substitute) are skipped.

hudAnchorPositionFromWorldProjection

Bool = true
Edit documentation

For HUD-layer systems: anchor the effect at the world position projected into screen space. Default true.

hudLayerDimension

F32 = 1024
Edit documentation

Size of the virtual canvas used to place HUD-layer systems (DrawingLayer = 1). Default 1024.

mEyeCandy

Bool = false
Edit documentation

Marks the system as non-gameplay eye candy. Eye-candy systems belong to the EyeCandy visibility group and are hidden when the player enables [General] HideEyeCandy.

mIsPoseAfterimage

Bool = false
Edit documentation

Marks the system as a pose afterimage effect (character snapshot/ghost visuals).

overrideScaleCap

Option<F32> = null
Edit documentation

Optional cap applied to the system's scale. Unset (the default) means no cap.

particleName

String = ""
Edit documentation

The system's short name, as authored (e.g. the troy name).

particlePath

String = ""
Edit documentation

The full content path identifying this system (the key other objects use to reference it).

scaleDynamicallyWithAttachedBone

Bool = false
Edit documentation

Scale the system with the scale of the bone it is attached to.

selfIllumination

F32 = -1
Edit documentation

Self-illumination factor applied to the system's rendering. -1 (default) = unset.

simpleEmitterDefinitionData

List<VfxEmitterDefinitionData> = []
Edit documentation

The system's simple emitters - a lightweight emitter path that skips the heavier complex-emitter features (no emission-mesh resolution). See also the emitter's LegacySimple property.

soundOnCreateDefault

String = ""
Edit documentation

Audio event fired once when a system instance is created.

soundPersistentDefault

String = ""
Edit documentation

Looping audio event started with the system and stopped when it ends. Whether it is cut immediately on deactivation or allowed to run out is controlled by Flags bit 0x10; whether it keeps playing off-screen by bit 0x20.

transform

Mtx44
Default value
[[1, 0, 0, 0],
 [0, 1, 0, 0],
 [0, 0, 1, 0],
 [0, 0, 0, 1]]
Edit documentation

Static transform applied to the whole system. Default identity.

visibilityRadius

F32 = 250
Edit documentation

Radius (in world units) of the bounding box used for visibility culling. The system's cull box is its position ± VisibilityRadius · √½ on each axis; when the box leaves the camera frustum the system is hidden and (unless flagged otherwise) its simulation is paused.

voiceOverOnCreateDefault

String = ""
Edit documentation

Voice-over event fired once when a system instance is created.

voiceOverPersistentDefault

String = ""
Edit documentation

Looping voice-over counterpart of SoundPersistentDefault, with the same lifetime rules.

Referenced by 22 classes · 39 properties

Show 2 more