ParticleEmitter
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
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.