Cogito, ergo sum

UE3:EmitterPool (UT3)

From Unreal Wiki, The Unreal Engine Documentation Site
Revision as of 07:40, 23 May 2008 by (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
UT3 Object >> Actor >> EmitterPool
Package: 
Engine
Direct subclass:
UTEmitterPool
This class in other games:
UDK

this class manages a pool of ParticleSystemComponents it is meant to be used for single shot effects spawned during gameplay to reduce object overhead that would otherwise be caused by spawning dozens of Emitters

Copyright 1998-2007 Epic Games, Inc. All Rights Reserved.

Properties[edit]

ActiveComponents[edit]

Type: array<ParticleSystemComponent>

components currently active

bLogPoolOverflow[edit]

Type: bool

Modifiers: globalconfig

option to log out the names of all active effects when the pool overflows

bLogPoolOverflowList[edit]

Type: bool

Modifiers: globalconfig


FreeMatInstConsts[edit]

Type: array<MaterialInstanceConstant>

Modifiers: private, const

The free MaterialInstanceConstants used by emitters in this pool

FreeSMComponents[edit]

Type: array<StaticMeshComponent>

Modifiers: private, const

The free StaticMeshComponents used by emitters in this pool

IdealMaterialInstanceConstants[edit]

Type: int


Default value: 250

IdealStaticMeshComponents[edit]

Type: int

The ideal number of StaticMeshComponents and MaterialInstanceConstants. If their counts are greater than this for more than ReductionTime, then they will be chopped down to their respective settings.

Default value: 250

MaxActiveEffects[edit]

Type: int

maximum allowed active components - if this is greater than 0 and is exceeded, the oldest active effect is taken

PoolComponents[edit]

Type: array<ParticleSystemComponent>

Modifiers: const

components currently in the pool

PSCTemplate[edit]

Type: ParticleSystemComponent

Modifiers: protected

template to base pool components off of - should not be used for effects or attached to anything

Default value: ParticleSystemComponent'ParticleSystemComponent0'

RelativePSCs[edit]

Type: array<EmitterBaseInfo>


SMC_MIC_CurrentReductionTime[edit]

Type: float

Modifiers: transient


SMC_MIC_ReductionTime[edit]

Type: float

The amount of time to allow the SMC and MIC arrays to be beyond their ideals.

Default value: 2.5

Default values[edit]

Property Value
CollisionType COLLIDE_CustomDefault
TickGroup TG_DuringAsyncWork

Subobjects[edit]

ParticleSystemComponent0[edit]

Class: Engine.ParticleSystemComponent

Property Value
AbsoluteRotation True
AbsoluteTranslation True

Structs[edit]

EmitterBaseInfo[edit]

Modifiers: native

list of components that should be relative to an Actor

ParticleSystemComponent PSC 
Actor Base 
Object.Vector RelativeLocation 
Object.Rotator RelativeRotation 

Functions[edit]

Native functions[edit]

FreeMaterialInstanceConstants[edit]

protected native final function FreeMaterialInstanceConstants (StaticMeshComponent SMC)

internal - moves the MIConstants from given SMComponent to the pool free list

FreeStaticMeshComponents[edit]

protected native final function FreeStaticMeshComponents (ParticleSystemComponent PSC)

internal - moves the SMComponents from given PSC to the pool free list

GetFreeMatInstConsts[edit]

protected native final function MaterialInstanceConstant GetFreeMatInstConsts (bool bCreateNewObject)

internal - retrieves a MaterialInstanceConstant from the pool free list

Parameters:

  • bCreateNewObject - If TRUE, create an MIC w/ the pool as its outer

Returns:

MaterialInstanceConstant The MIC, NULL if none was available/created

GetFreeStaticMeshComponent[edit]

protected native final function StaticMeshComponent GetFreeStaticMeshComponent (bool bCreateNewObject)

internal - retrieves a SMComponent from the pool free list

Parameters:

  • bCreateNewObject - If TRUE, create an SMC w/ the pool as its outer

Returns:

StaticMeshComponent The SMC, NULL if none was available/created

GetPooledComponent[edit]

protected native final function ParticleSystemComponent GetPooledComponent (ParticleSystem EmitterTemplate)

internal - helper for spawning functions gets a component from the appropriate pool array (checks PerEmitterPools) includes creating a new one if necessary as well as taking one from the active list if the max number active has been exceeded

Returns:

the ParticleSystemComponent to use

ReturnToPool[edit]

protected native final function ReturnToPool (ParticleSystemComponent PSC)

internal - detaches the given PSC and returns it to the pool

Other instance functions[edit]

OnParticleSystemFinished[edit]

function OnParticleSystemFinished (ParticleSystemComponent PSC)

set to each pool component's finished delegate to return it to the pool for custom lifetime PSCs, must be called manually when done with the component

SpawnEmitter[edit]

function ParticleSystemComponent SpawnEmitter (ParticleSystem EmitterTemplate, Object.Vector SpawnLocation, optional Object.Rotator SpawnRotation, optional Actor AttachToActor)

plays the specified effect at the given location and rotation, taking a component from the pool or creating as necessary

Parameters:

  • EmitterTemplate - particle system to create
  • SpawnLocation - location to place the effect in world space
  • SpawnRotation - opt) - rotation to place the effect in world space
  • AttachToActor - opt) - if specified, component will move along with this Actor

Returns:

the ParticleSystemComponent the effect will use

Note: the component is returned so the caller can perform any additional modifications (parameters, etc), but it shouldn't keep the reference around as the component will be returned to the pool as soon as the effect is complete

SpawnEmitterCustomLifetime[edit]

function ParticleSystemComponent SpawnEmitterCustomLifetime (ParticleSystem EmitterTemplate)

spawns a pooled component that has a custom lifetime (controlled by the caller) the caller is responsible for attaching/detaching the component as well as calling our OnParticleSystemFinished() function when it is done with the component the pool may take the component back early - if it does, it will trigger the component's OnSystemFinished delegate so the caller can guarantee that it will be triggered

Parameters:

  • EmitterTemplate - particle system to create

Returns:

the ParticleSystemComponent to use