| Home Page | Recent Changes | Preferences


UT2003 :: Object >> ParticleEmitter (Package: Engine)

Subclasses of this class are used in Emitter actors. The settings are pretty complex and require a fair amount of trial and error to get used to. Some examples can be found in our ParticleEmitter cookbook.


Acceleration Group

vector Acceleration
Vector which determins the acceleration of the particles in any of the three planes

Collision Group

This group controls the particles' collision behavior.

array<plane> CollisionPlanes
Can be used to specify planes in the Unreal world the particle will collide with. The planes will be used for collision when UseCollisionPlanes is True.
rangevector DampingFactorRange
Damping applied to the particle's velocity when it collides with something.
vector ExtentMultiplier
A multiplier for the particles' size for collision calculations.
range MaxCollisions
Maximum number of collisions before the particle is destroyed. This property will only be used when UseMaxCollisions is True.
int SpawnAmount
The number of sub-particles spawned when the particles collide with something.
rangevector SpawnedVelocityScaleRange
The velocity of the spawned sub-particles.
int SpawnFromOtherEmitter
The ParticleEmitter within the same Emitter actor used for the sub-particles.
bool UseCollision
Whether the particles should use collision.
bool UseCollisionPlanes
Whether the particles should collide with the CollisionPlanes.
bool UseMaxCollisions
Whether the particles should be destroyed when they reach their maximum number of collisons.
bool UseSpawnedVelocityScale
Whether to use SpawnedVelocityScaleRange for collision sub-particles.

Color Group

rangevector ColorMultiplierRange
Used to randomize the color of the particles. X corresponds to red, Y corresponds to Green and Y corresponds to blue.
array<ParticleColorScale> ColorScale
Used to change the color of a particle over time. You set both a color you want it to be, and the relative time at which you want it to be that color. It will fade from whatever color it is to the color you want it to be over the interval you specify. The time is relative, so 0.5 would be half the particles lifespan.
float ColorScaleRepeats
How many times to repeat the color scales. Example, if you have a color scale that changes it to black at 0.5 time(half its lifespan), with color repeats it will be black by the time its half way done living. With one repeat, it will be black at 1/4 of its lifespan, normal at 1/2, and black again at 3/4ths of its lifespan.
bool UseColorScale
Must be true for ColorScales and ColorScaleRepeats to have any effect on the particles.

Fading Group

bool FadeIn
If true, it will fade the particle in
float FadeInEndTime
If FadeIn is true, this is the time at which the particle will have completly faded in and is 100% visible. This is NOT relative. 0.5 is 1/2 a second, not 1/2 of the particles lifespan.
plane FadeInFactor
Specifies how much each component of the particle colors should be faded. 1 means start at 0 while e.g. 0.5 means start at half the normal value. X,Y,Z correspond to R,G,B and W corresponds to the alpha value.
bool FadeOut
If true, the particle will fade out.
plane FadeOutFactor
Specifies how much each component of the particle colors should be faded. 1 means end at 0 while e.g. 0.5 means end at half the normal value. X,Y,Z correspond to R,G,B and W corresponds to the alpha value.
float FadeOutStartTime
If Fadeout is true, this is the absolute time at which the particle will start fading out. Fading out overrules fading in, so if a particle is not yet faded in and starts fading out, it will start at full color values.

Force Group

bool UseActorForces
Whether the particles can be affected by Actor forces.
Note: Setting this to True can cause a huge performance hit and will only work when physics details are set high enough.

General Group

EParticleCoordinateSystem CoordinateSystem
Determines how the settings in the location section are calculated. See /Enums.
EParticleEffectAxis EffectAxis
int MaxParticles (const)
Maximum number of particles that this ParticleEmitter can have at a time.
bool ResetAfterChange
Determines if this emitter reset after a change has been made to its properties. It currently has no effect. (emitter resets no matter what if you make a change)

Local Group

bool AutoDestroy
Determines if this emitter will destroy itself once all particles are gone.
bool AutoReset
Determines if this emitter will reset itself after a specified amount of time.
range AutoResetTimeRange
The time delay for auto-resets.
bool Disabled
If true, this emitter wont emit anything. This is useful if you only want to test one of several ParticleEmitters in an Emitter actor or want to enable/disable them from code.
bool DisableFogging
Determines if particles are affected by distance fog.
string Name
A name for this ParticleEmitter
bool RespawnDeadParticles
Determines if dead particles (i.e. particles that have exceeded their lifespan or maximum collisions) should be respawned.

Location Group

This sets the sets the dimensions of the emitter domain: the place where particles will spawn (though they may m,ove out of this afterwards).

int AddLocationFromOtherEmitter
You can specify another ParticleEmitter's index within the Emitter actor's Emitters array to spawn particles relative to that other emitter's particle locations.
range SphereRadiusRange
Used when StartLocationShape is Sphere. Particles will spawn any distance between the min and max from the center of the emitter. If both max and min are the same, particles will spawn all along the outside of a sphere with this radius.
vector StartLocationOffset
Offset from the origin of the ParticleEmitter's coordinate system. The type of coordinate system is selected under General → CoordinateSystem.
rangevector StartLocationPolarRange
Used when StartLocationShape is Polar. StartLocationPolarRange specifies spherical polar coordinates.
Presumably angle in the YZ plane, but just this and radius (i.e. 0 for both Y) just makes a line.
Angle in the XZ plane. Set this to ( 0, 65536 ) and suitable radius for a disc shape.
The radius.
rangevector StartLocationRange
Used when StartLocationShape is Box. See DM-Oceanic for a good example: for a line of bubbles, just set one co-ordinate, eg X: -64, 64. For a plane surface of bubbles, set two. The rotation of the enclosing Emitter actor orients this domain.
EParticleStartLocationShape StartLocationShape
Sets the shape. This determines which of the above numeric properties is used. See /Enums.

Mass Group

range StartMassRange

MeshSpawning Group

vector MeshNormal
range MeshNormalThresholdRange
rangevector MeshScaleRange
This determines the size scale of an emitted mesh. It takes each axis independantly, so setting a good range can result in a lot of different shapes on the same mesh.
EParticleMeshSpawning MeshSpawning
StaticMesh MeshSpawningStaticMesh
bool SpawnOnlyInDirectionOfNormal
bool UniformMeshScale
If this is true, the settings in meshscalerange are no longer used for each axis independantly. Instead, the mesh will be scaled along all axis using the x values.
bool UniformVelocityScale
bool UseColorFromMesh
bool VelocityFromMesh
rangevector VelocityScaleRange

Rendering Group

bool AcceptsProjectors
int AlphaRef
bool AlphaTest
bool ZTest
bool ZWrite

Revolution Group

Revolution moves all particles around a central point or area. This might be useful for vortex-like particle effects.

rangevector RevolutionCenterOffsetRange
The range of where the center of revolution for this particle will be
array<ParticleRevolutionScale> RevolutionScale
float RevolutionScaleRepeats
rangevector RevolutionsPerSecondRange
Determines how many times the particle will orbit the center per second, it takes each axis independantly.
bool UseRevolution
If true, the particles will orbit a center point.
bool UseRevolutionScale
Whether the RevolutionScale settings should be used.


Rotation rotates the particle itself around its center.

bool DampRotation
Whether collision should affect a particle's rotation.
rangevector RotationDampingFactorRange
How collision affects the particle's rotation.
vector RotationNormal
The normal used when UseRotationFrom is set to PTRS_Normal.
rotator RotationOffset
vector SpinCCWorCW
The chance that particles will spin clockwise. 0 will make all particles spin counterclockwise, 0.7 will give a 70% chance that particles spin clockwise and a 30% chance for spinning counterclockwise.
bool SpinParticles
Whether particles should spin.
rangevector SpinsPerSecondRange
The range that determines how fast the particles will spin. X, Y and Z correspond to Pitch, Yaw and Roll.
rangevector StartSpinRange
Specifies the initial rotation of the particles. Again, X, Y and Z correspond to Pitch, Yaw and Roll.
EParticleRotationSource UseRotationFrom
What to base the rotation on. See /Enums.


array<ParticleTimeScale> SizeScale
float SizeScaleRepeats
rangevector StartSizeRange
bool UniformSize
bool UseRegularSizeScale
bool UseSizeScale


range RelativeBoneIndexRange
Actor SkeletalMeshActor
vector SkeletalScale
ESkelLocationUpdate UseSkeletalLocationAs


EParticleCollisionSound CollisionSound
range CollisionSoundIndex
range CollisionSoundProbability
array<ParticleSound> Sounds
EParticleCollisionSound SpawningSound
range SpawningSoundIndex
range SpawningSoundProbability


bool AutomaticInitialSpawning
float InitialParticlesPerSecond
float ParticlesPerSecond


bool BlendBetweenSubdivisions
EParticleDrawStyle DrawStyle
int SubdivisionEnd
array<float> SubdivisionScale
int SubdivisionStart
Texture Texture
int TextureUSubdivisions
int TextureVSubdivisions
bool UseRandomSubdivision
bool UseSubdivisionScale


float MinSquaredVelocity
float SecondsBeforeInactive


range InitialDelayRange
Determines how long before this emitter will become active
range InitialTimeRange
range LifetimeRange
Determines the lifespan of the particles that this emitter emits.


bool ResetOnTrigger
float SpawnOnTriggerPPS
range SpawnOnTriggerRange
bool TriggerDisabled


int AddVelocityFromOtherEmitter
rangevector AddVelocityMultiplierRange
EParticleVelocityDirection GetVelocityDirectionFrom
vector MaxAbsVelocity
range StartVelocityRadialRange
rangevector StartVelocityRange
bool UseVelocityScale
rangevector VelocityLossRange
array<ParticleVelocityScale> VelocityScale
float VelocityScaleRepeats


float RelativeWarmupTime
float WarmupTicksPerSecond

Other Properties

These properties aren't visible in UnrealEd. All of them are transient, i.e. their value won't be saved when saving a game. Some of these properties represent scary internal stuff and probably shouldn't be touched.

int ActiveParticles
Currently active particles
bool AllParticlesDead
Whether all particles have died.
int BoneIndex
box BoundingBox
color Color
vector ColorMultiplier
int CurrentCollisionSoundIndex
int CurrentMeshSpawningIndex
int CurrentSpawningSoundIndex
int CurrentSpawnOnTrigger
int DeferredParticles
int Flags
vector GlobalOffset
int HitCount
bool Inactive
float InactiveTime
float InitialDelay
bool Initialized
int KillPending
float Mass
int MaxActiveParticles
float MaxLifetime
float MaxSizeScale
array<vector> MeshVertsAndNormals
vector OldLocation
vector OldMeshLocation
int OtherIndex
Emitter Owner
The Emitter actor this ParticleEmitter belongs to.
int ParticleIndex
Index into circular list of particles
array<Particle> Particles
Contains the data of all active particles. See /Structs for details about the Particle data type.
float PPSFraction
Used to keep track of fractional PPTick
int PS2Data
bool RealDisableFogging
vector RealExtentMultiplier
vector RealMeshNormal
vector RevolutionCenter
vector RevolutionsMultiplier
vector RevolutionsPerSecond
vector Size
vector SpinsPerSecond
vector StartLocation
vector StartSize
vector StartSpin
int Subdivision
float Time
float TimeTillReset
vector Velocity
vector VelocityMultiplier
bool WarmedUp


See /Enums.


See /Structs.


SpawnParticle (int Amount) [native]
Spawns a specified amount of particles.
Trigger ( ) [native]
Performs the action specified in the Trigger property group. This function is called by the parent Emitter actor's Trigger function.

Known Subclasses

Related Topics

Category Class (UT2003)

Foxpaw: TrailEmitters don't seem to work, even when you move them around. I couldn't find any combination of settings that produced a visible output. I think that they are a work in progress.

Wormbo: With a new class MyTrailEmitter extends TrailEmitter; and these Emitter properties I got a nice effect:

    Begin Object Class=MyTrailEmitter Name=MyTrailEmitter0
    End Object

Foxpaw: Ah, I see. I was thinking that they worked differently, that if you moved the emitter it should leave a "trail" of particles behind. I see now that they operate very much like SparkEmitters, only with sprites instead of sparks.

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands


Mapping Topics

Mapping Lessons

UnrealEd Interface


Scripting Topics

Scripting Lessons

Making Mods

Class Tree


Modeling Topics


Log In