| Home Page | Recent Changes | Preferences

# ParticleEmitter

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.

## Properties

### 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.
  X
    Presumably angle in the YZ plane, but just this and radius (i.e. 0 for both Y) just makes a line.
  Y
    Angle in the XZ plane. Set this to ( 0, 65536 ) and suitable radius for a disc shape.
  Z
    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

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.

### Size

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

### Skeletalmesh

range RelativeBoneIndexRange
Actor SkeletalMeshActor
vector SkeletalScale
ESkelLocationUpdate UseSkeletalLocationAs

### Sound

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

### Spawning

bool AutomaticInitialSpawning
float InitialParticlesPerSecond
float ParticlesPerSecond

### Texture

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

### Tick

float MinSquaredVelocity
float SecondsBeforeInactive

### Time

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.

### Trigger

bool ResetOnTrigger
float SpawnOnTriggerPPS
range SpawnOnTriggerRange
bool TriggerDisabled

### Velocity

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

### Warmup

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

## Enums

See /Enums.

## Structs

See /Structs.

## Methods

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

- BeamEmitter
- MeshEmitter
- SparkEmitter
- SpriteEmitter
- TrailEmitter? (abstract)

## Related Topics

- ParticleEmitter Cookbook
- EmittersReference
- EmittersExamples

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
            Acceleration=(Z=-300.000000)
            StartSizeRange=(X=(Min=10.0,Max=10.0),Y=(Min=10.0,Max=10.0),Z=(Min=10.0,Max=10.0))
            StartVelocityRange=(X=(Min=-200.0),Y=(Min=-200.0,Max=200.0),Z=(Max=200.0))
            Name="MyTrailEmitter0"
        End Object
        Emitters(0)=MyTrailEmitter'myLevel.MyTrailEmitter0'

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

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In