DayZ 1.24
Loading...
Searching...
No Matches
ParticleManager.c File Reference

Go to the source code of this file.

Classes

class  ParticleManagerConstants
 Class simply to have easily modded constants. More...
 
class  ParticleManagerEvents
 Invokers for ParticleManager events. More...
 

Enumerations

enum  ParticleManagerSettingsFlags {
  NONE , FIXED_INDEX , BLOCKING , DISABLE_VIRTUAL ,
  REUSE_OWNED
}
 Flags for ParticleManagerSettings. More...
 

Functions

class ParticleManagerConstants ParticleManagerSettings (int poolSize, int flags=ParticleManagerSettingsFlags.NONE)
 Settings given to ParticleManager on creation (in ctor)
 
void ~ParticleManagerSettings ()
 dtor
 
static ParticleManager GetInstance ()
 Access to the static ParticleManager.
 
static void CleanupInstance ()
 To clean it up properly before game closes.
 
void ParticleManager (ParticleManagerSettings settings)
 Constructor (ctor)
 
void ~ParticleManager ()
 dtor
 
API for compatibility with Particle/ParticleSource create/play

Mimics the static Create and Play methods from Particle/ParticleSource

ParticleSource CreateParticle (int id, vector pos, bool playOnCreation=false, Object parent=null, vector ori=vector.Zero, bool forceWorldRotation=false, Class owner=null)
 Create function.
 
ParticleSource CreateParticleEx (int id, vector pos, int flags=ParticlePropertiesFlags.NONE, Object parent=null, vector ori=vector.Zero, Class owner=null)
 Master create function.
 
ParticleSource CreateOnObject (int particle_id, Object parent_obj, vector local_pos="0 0 0", vector local_ori="0 0 0", bool force_world_rotation=false)
 Creates a particle emitter and attaches it on the given object.
 
ParticleSource Create (int particle_id, Object parent_obj, vector local_pos="0 0 0", vector local_ori="0 0 0")
 Legacy function for backwards compatibility.
 
ParticleSource CreateInWorld (int particle_id, vector global_pos, vector global_ori="0 0 0", bool force_world_rotation=false)
 Creates a particle emitter on the given position.
 
ParticleSource Create (int particle_id, vector global_pos, vector global_ori="0 0 0")
 Legacy function for backwards compatibility with 1.01 and below.
 
Static play on creation

You can use the following Play(...) functions to create and activate a particle in 1 line of your script.

ParticleSource PlayOnObject (int particle_id, Object parent_obj, vector local_pos="0 0 0", vector local_ori="0 0 0", bool force_world_rotation=false)
 Creates a particle emitter, attaches it on the given object and activates it.
 
ParticleSource Play (int particle_id, Object parent_obj, vector local_pos="0 0 0", vector local_ori="0 0 0")
 Legacy function for backwards compatibility with 1.01 and below.
 
ParticleSource PlayInWorld (int particle_id, vector global_pos)
 Creates a particle emitter on the given position and activates it.
 
ParticleSource PlayInWorldEx (int particle_id, Object parent_obj, vector global_pos, vector global_ori="0 0 0", bool force_world_rotation=false)
 
ParticleSource Play (int particle_id, vector global_pos)
 Legacy function for backwards compatibility with 1.01 and below.
 
Get Particles

API for creating, playing or obtaining particles from the pool

proto native int CreateParticles (array< ParticleSource > particles, string path, notnull ParticlePropertiesArray properties, int count=1)
 Creates an amount of particles with the properties given.
 
ParticleSource CreateParticleByPath (string path, notnull ParticleProperties properties)
 Create a particle.
 
int CreateParticlesById (int id, notnull ParticlePropertiesArray properties, int count)
 QoL function using script ParticleList, strongly recommend to read comments for CreateParticles as well.
 
array< ParticleSourceCreateParticlesByIdArr (int id, notnull ParticlePropertiesArray properties, int count)
 QoL function using script ParticleList, strongly recommend to read comments for CreateParticles as well.
 
ParticleSource CreateParticleById (int id, ParticleProperties properties)
 QoL function for when only one particle is needed using script ParticleList, strongly recommend to read comments for CreateParticles as well.
 
proto native int PlayParticles (out array< ParticleSource > particles, string path, notnull array< vector > positions, int count=1)
 QoL function for when wanting to play a particle at a position right away.
 
array< ParticleSourcePlayParticlesById (int id, array< vector > positions, int count)
 QoL function using script ParticleList, strongly recommend to read comments for PlayParticles as well.
 
ParticleSource PlayParticleById (int id, array< vector > position)
 QoL function for when only one particle is needed using script ParticleList, strongly recommend to read comments for PlayParticles as well.
 
proto native ParticleSource GetParticle (int index)
 Manually get the particle at index.
 
proto native int GetParticles (out array< ParticleSource > outArray, int startIndex, int count)
 Manually get a portion of the particles in the pool.
 
array< ParticleSourceGetParticlesEx (int startIndex, int count)
 Manually get a portion of the particles in the pool.
 
Identification

Identification functionality

proto native void SetName (string name)
 Set a name for the ParticleManager to identify it more easily.
 
proto string GetName ()
 Gets the name which is set for the ParticleManager, default is "ParticleSourceManager".
 
proto string GetDebugNameNative ()
 Gets the debug name for the ParticleManager.
 
override string GetDebugName ()
 Gets the debug name for the ParticleManager.
 
proto int GetCountID ()
 Gets the ID for the ParticleManager.
 
proto static native int GetStaticCount ()
 Gets the amount of ParticleManager that have been created since the start of the program.
 
proto static native int GetStaticActiveCount ()
 Gets the amount of ParticleManager that are currently existing.
 
Properties and state

Obtain information about the state of the ParticleManager

proto native int GetPoolSize ()
 Gets the fixed maximum size of the pool.
 
proto native int GetAllocatedCount ()
 Gets the amount of particles currently allocated.
 
proto native int GetVirtualCount ()
 Gets the amount of virtual particles.
 
proto native int GetPlayingCount ()
 Gets the amount of playing particles.
 
proto native bool IsFinishedAllocating ()
 Checks if the ParticleManager has allocated all slots in the pool.
 
Script Events API

Setting and getting of ScriptEvents

proto void SetScriptEvents (Managed events)
 Set the events.
 
proto Managed GetScriptEvents ()
 Get the events.
 
ParticleManagerEvents GetEvents ()
 Get the events.
 
Events

Events called from C++

void OnAllocation (array< ParticleSource > allocatedParticles)
 
void OnAllocationEnd ()
 

Variables

class ParticleManagerEvents g_ParticleManager
 Has a fixed pool of precreated and reserved particles.
 
Global ParticleManager settings

Settings applied to the global ParticleManager

static const int POOL_SIZE = 10000
 
static const int FLAGS = ParticleManagerSettingsFlags.NONE
 

Enumeration Type Documentation

◆ ParticleManagerSettingsFlags

Flags for ParticleManagerSettings.

Enumerator
NONE 
FIXED_INDEX 

Particles will be locked to the index and not reused.

BLOCKING 

Allocation blocks the game until it is done.

DISABLE_VIRTUAL 

Disable the creation of virtual particles when the pool is still allocating.

REUSE_OWNED 

Reuse stopped particles even if they are owned by something.

Definition at line 2 of file ParticleManager.c.

3{
4 NONE,
13};
@ REUSE_OWNED
Reuse stopped particles even if they are owned by something.
@ DISABLE_VIRTUAL
Disable the creation of virtual particles when the pool is still allocating.
@ BLOCKING
Allocation blocks the game until it is done.
@ FIXED_INDEX
Particles will be locked to the index and not reused.
@ NONE

Function Documentation

◆ CleanupInstance()

static void CleanupInstance ( )
static

To clean it up properly before game closes.

Definition at line 74 of file ParticleManager.c.

75 {
77 delete g_ParticleManager;
78 }
class ParticleManagerEvents g_ParticleManager
Has a fixed pool of precreated and reserved particles.

References g_ParticleManager.

◆ Create() [1/2]

ParticleSource Create ( int particle_id,
Object parent_obj,
vector local_pos = "0 0 0",
vector local_ori = "0 0 0" )

Legacy function for backwards compatibility.

Definition at line 169 of file ParticleManager.c.

170 {
172 }
ParticleSource CreateOnObject(int particle_id, Object parent_obj, vector local_pos="0 0 0", vector local_ori="0 0 0", bool force_world_rotation=false)
Creates a particle emitter and attaches it on the given object.
int particle_id

References CreateOnObject(), and particle_id.

◆ Create() [2/2]

ParticleSource Create ( int particle_id,
vector global_pos,
vector global_ori = "0 0 0" )

Legacy function for backwards compatibility with 1.01 and below.

Definition at line 190 of file ParticleManager.c.

191 {
193 }
ParticleSource CreateInWorld(int particle_id, vector global_pos, vector global_ori="0 0 0", bool force_world_rotation=false)
Creates a particle emitter on the given position.

References CreateInWorld(), and particle_id.

◆ CreateInWorld()

ParticleSource CreateInWorld ( int particle_id,
vector global_pos,
vector global_ori = "0 0 0",
bool force_world_rotation = false )

Creates a particle emitter on the given position.

Parameters
particle_idint Particle ID registered in ParticleList
global_posVector Position where the particel will be created
global_orivector Orientation (Pitch, Yawn, Roll in degrees) (Optional)
force_world_rotationbool Has absolutely no effect here as there is no parent
Returns
ParticleSource Created particle instance

Definition at line 182 of file ParticleManager.c.

183 {
185 }
void CreateParticle()

References CreateParticle(), and particle_id.

Referenced by Create().

◆ CreateOnObject()

ParticleSource CreateOnObject ( int particle_id,
Object parent_obj,
vector local_pos = "0 0 0",
vector local_ori = "0 0 0",
bool force_world_rotation = false )

Creates a particle emitter and attaches it on the given object.

Parameters
particle_idint Particle ID registered in ParticleList
parent_objObject Instance on which this particle will be attached
local_posvector Attachment position local to the parent (Optional)
local_orivector Orientation local to the parent (Pitch, Yaw, Roll in degrees) (Optional)
force_world_rotationbool Forces particle's orientation to rotate relative to the world and not with the object (Optional)
Returns
ParticleSource Created particle instance

Definition at line 156 of file ParticleManager.c.

References CreateParticle(), and particle_id.

Referenced by Create().

◆ CreateParticle()

ParticleSource CreateParticle ( int id,
vector pos,
bool playOnCreation = false,
Object parent = null,
vector ori = vector.Zero,
bool forceWorldRotation = false,
Class owner = null )

Create function.

Parameters
idint Particle ID registered in ParticleList
posvector Position of ParticleSource in LS (WS when no parent)
playOnCreationbool Whether to play immediately after creation (Optional)
parentObject Parent Object which will child the ParticleSource (Optional)
orivector Orientation of ParticleSource in LS (WS when no parent) (Pitch, Yaw, Roll in degrees) (Optional)
forceWorldRotationbool Forces orientation to rotate relative to the world and not with the parent (Optional)
ownerClass The owning instance for this particle (Optional)
Returns
ParticleSource Created particle instance when successful

Definition at line 110 of file ParticleManager.c.

111 {
112 int flags = ParticlePropertiesFlags.NONE;
113
114 if (playOnCreation)
115 flags = flags | ParticlePropertiesFlags.PLAY_ON_CREATION;
116
118 flags = flags | ParticlePropertiesFlags.FORCE_WORLD_ROT;
119
120 return CreateParticleEx(id, pos, flags, parent, ori, owner);
121 }
ParticleSource CreateParticleEx(int id, vector pos, int flags=ParticlePropertiesFlags.NONE, Object parent=null, vector ori=vector.Zero, Class owner=null)
Master create function.

References CreateParticleEx().

◆ CreateParticleById()

ParticleSource CreateParticleById ( int id,
ParticleProperties properties )

QoL function for when only one particle is needed using script ParticleList, strongly recommend to read comments for CreateParticles as well.

Parameters
idint ID of particle registered in ParticleList
propertiesParticleProperties Properties of the particles created
Returns
ParticleSource The resulting particle

Definition at line 317 of file ParticleManager.c.

318 {
321
322 if (tempArr.Count() > 0)
323 return tempArr[0];
324 else
325 return null;
326 }
proto native int CreateParticles(array< ParticleSource > particles, string path, notnull ParticlePropertiesArray properties, int count=1)
Creates an amount of particles with the properties given.
static string GetParticleFullPath(int particle_id)
Returns particle's full path (with .ptc suffix) based on its ID.

References CreateParticles(), and ParticleList::GetParticleFullPath().

◆ CreateParticleByPath()

ParticleSource CreateParticleByPath ( string path,
notnull ParticleProperties properties )

Create a particle.

Parameters
pathstring Path of particle effect
propertiesParticleProperties Properties of the particles created
Returns
ParticleSource The resulting particle

Definition at line 274 of file ParticleManager.c.

275 {
278
279 if (tempArr.Count() > 0)
280 return tempArr[0];
281 else
282 return null;
283 }

References CreateParticles(), and path.

Referenced by CreateParticleEx().

◆ CreateParticleEx()

ParticleSource CreateParticleEx ( int id,
vector pos,
int flags = ParticlePropertiesFlags.NONE,
Object parent = null,
vector ori = vector.Zero,
Class owner = null )

Master create function.

Parameters
idint Particle ID registered in ParticleList
posvector Position of ParticleSource in LS (WS when no parent)
flagsint See ParticlePropertiesFlags (Optional)
parentObject Parent Object which will child the ParticleSource (Optional)
orivector Orientation of ParticleSource in LS (WS when no parent) (Pitch, Yaw, Roll in degrees) (Optional)
ownerClass The owning instance for this particle (Optional)
Returns
ParticleSource Created particle instance when successful

Definition at line 133 of file ParticleManager.c.

134 {
136 if (particlePath == "") // There is already an error inside of ParticleList signaling this
137 {
138 ErrorEx(string.Format("Could not create ParticleSource as particle id %1 is invalid.", id));
139 return null;
140 }
141
142 ParticleProperties props = new ParticleProperties(pos, flags, parent, ori, owner);
144 return p;
145 }
ParticleSource CreateParticleByPath(string path, notnull ParticleProperties properties)
Create a particle.
Entity which has the particle instance as an ObjectComponent.
enum ShapeType ErrorEx

References CreateParticleByPath(), ErrorEx, and ParticleList::GetParticleFullPath().

Referenced by CreateParticle().

◆ CreateParticles()

proto native int CreateParticles ( array< ParticleSource > particles,
string path,
notnull ParticlePropertiesArray properties,
int count = 1 )

Creates an amount of particles with the properties given.

Parameters
particlesarray<ParticleSource> The resulting particles if an array is given
pathstring Path of particle effect
propertiesParticleProperties Properties of the particles created
countint Amount of particles to create with these properties
Returns
int Amount of particles created in this frame, if the ParticleManager is still allocating while this is called and virtual particles are enabled, the overflow particles will be virtual instead and not given in the out array

Referenced by CreateParticleById(), CreateParticleByPath(), CreateParticlesById(), and CreateParticlesByIdArr().

◆ CreateParticlesById()

int CreateParticlesById ( int id,
notnull ParticlePropertiesArray properties,
int count )

QoL function using script ParticleList, strongly recommend to read comments for CreateParticles as well.

Parameters
idint ID of particle registered in ParticleList
propertiesParticleProperties Properties of the particles created
countint Amount of particles to create with these properties
Returns
int Amount of particles created in this frame, if the ParticleManager is still allocating while this is called and virtual particles are enabled, the overflow particles will be virtual instead

Definition at line 292 of file ParticleManager.c.

References CreateParticles(), and ParticleList::GetParticleFullPath().

◆ CreateParticlesByIdArr()

array< ParticleSource > CreateParticlesByIdArr ( int id,
notnull ParticlePropertiesArray properties,
int count )

QoL function using script ParticleList, strongly recommend to read comments for CreateParticles as well.

Parameters
idint ID of particle registered in ParticleList
propertiesParticleProperties Properties of the particles created
countint Amount of particles to create with these properties
Returns
array<ParticleSource> The resulting particles - Read particles param of CreateParticles

Definition at line 304 of file ParticleManager.c.

References CreateParticles(), and ParticleList::GetParticleFullPath().

◆ GetAllocatedCount()

proto native int GetAllocatedCount ( )

Gets the amount of particles currently allocated.

Returns
int Amount of particles currently allocated

◆ GetCountID()

proto int GetCountID ( )

Gets the ID for the ParticleManager.

Returns
int ID for the ParticleManager (different every restart, as it is the nth instance created since the start of the program)

◆ GetDebugName()

override string GetDebugName ( )

Gets the debug name for the ParticleManager.

Returns
string "name:id"

Definition at line 428 of file ParticleManager.c.

429 {
430 return GetDebugNameNative();
431 }
proto string GetDebugNameNative()
Gets the debug name for the ParticleManager.

References GetDebugNameNative().

◆ GetDebugNameNative()

proto string GetDebugNameNative ( )

Gets the debug name for the ParticleManager.

Parameters
dbgNamestring "name:id"

Referenced by IEntity::GetDebugName(), and GetDebugName().

◆ GetEvents()

ParticleManagerEvents GetEvents ( )
private

Get the events.

Returns
ParticleManagerEvents If there is any events set, this will return them so that additional functionality can be bound to them

Definition at line 513 of file ParticleManager.c.

514 {
516 }
proto Managed GetScriptEvents()
Get the events.
Invokers for ParticleManager events.

References GetScriptEvents().

◆ GetInstance()

static ParticleManager GetInstance ( )
static

Access to the static ParticleManager.

Definition at line 59 of file ParticleManager.c.

60 {
61 if (!g_ParticleManager && !GetGame().IsDedicatedServer())
62 {
67 g_ParticleManager.SetName("GlobalParticleManager");
68 }
69
70 return g_ParticleManager;
71 }
class ParticleManagerConstants ParticleManagerSettings(int poolSize, int flags=ParticleManagerSettingsFlags.NONE)
Settings given to ParticleManager on creation (in ctor)
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Class simply to have easily modded constants.
static const int POOL_SIZE
proto native CGame GetGame()

References ParticleManagerConstants::FLAGS, g_ParticleManager, GetGame(), ParticleManager(), ParticleManagerSettings(), and ParticleManagerConstants::POOL_SIZE.

◆ GetParticle()

proto native ParticleSource GetParticle ( int index)

Manually get the particle at index.

Parameters
indexint Index of particle
Returns
ParticleSource ParticleSource at given index

◆ GetParticles()

proto native int GetParticles ( out array< ParticleSource > outArray,
int startIndex,
int count )

Manually get a portion of the particles in the pool.

Parameters
particlesarray<ParticleSource> The resulting particles
startIndexint Starting index
countint Amount of particles to get
Returns
int Amount of particles in outArray

Referenced by GetParticlesEx().

◆ GetParticlesEx()

array< ParticleSource > GetParticlesEx ( int startIndex,
int count )

Manually get a portion of the particles in the pool.

Parameters
startIndexint Starting index
countint Amount of particles to get
Returns
array<ParticleSource> The resulting particles

Definition at line 391 of file ParticleManager.c.

392 {
395 return outArr;
396 }
proto native int GetParticles(out array< ParticleSource > outArray, int startIndex, int count)
Manually get a portion of the particles in the pool.

References GetParticles().

◆ GetPlayingCount()

proto native int GetPlayingCount ( )

Gets the amount of playing particles.

Returns
int Amount of currently playing particles

◆ GetPoolSize()

proto native int GetPoolSize ( )

Gets the fixed maximum size of the pool.

Returns
int The fixed maximum size of the pool

◆ GetScriptEvents()

proto Managed GetScriptEvents ( )
private

Get the events.

Returns
Managed If there is any events set, this will return them

Referenced by GetEvents().

◆ GetStaticActiveCount()

proto static native int GetStaticActiveCount ( )
static

Gets the amount of ParticleManager that are currently existing.

Returns
int Amount of ParticleManager that are currently existing

◆ GetStaticCount()

proto static native int GetStaticCount ( )
static

Gets the amount of ParticleManager that have been created since the start of the program.

Returns
int Amount of ParticleManager that have been created since the start of the program

◆ GetVirtualCount()

proto native int GetVirtualCount ( )

Gets the amount of virtual particles.

Returns
int Amount of virtual particles currently waiting to be turned into real particles

◆ IsFinishedAllocating()

proto native bool IsFinishedAllocating ( )

Checks if the ParticleManager has allocated all slots in the pool.

Returns
bool True when the number of allocated particles is the same as the pool size

◆ OnAllocation()

void OnAllocation ( array< ParticleSource > allocatedParticles)
private

Definition at line 526 of file ParticleManager.c.

527 {
529 }
ParticleManagerEvents GetEvents()
Get the events.
ref ScriptInvoker Event_OnAllocation

References GetEvents().

◆ OnAllocationEnd()

void OnAllocationEnd ( )
private

Definition at line 531 of file ParticleManager.c.

532 {
533 GetEvents().Event_OnAllocationEnd.Invoke(this);
534 }
ref ScriptInvoker Event_OnAllocationEnd

References GetEvents().

◆ ParticleManager()

void ParticleManager ( ParticleManagerSettings settings)

Constructor (ctor)

Parameters
settingsParticleManagerSettings Settings for the ParticleManager

Definition at line 84 of file ParticleManager.c.

85 {
86 }

Referenced by Hit_MeatBones::BloodSplatGround(), PMTPlayback::CheckOnePlaying(), CheckTestEvents(), PMTF::CreatePMFixedBlocking(), ItemBase::DoMeasurement(), DynamicArea_Flare::DynamicArea_Flare(), BuildingSuper::EEInit(), EffBulletImpactBase::Event_OnStarted(), CGame::ExplosionEffects(), GetInstance(), EntityLightSource::HandleDancingShadows(), HandleVisualEffects(), WeaponParticlesBase::OnActivate(), OnActivatedByItem(), FlareSimulation::OnActivation(), Grenade_ChemGas::OnDamageDestroyed(), CGame::OnEvent(), FireworksLauncherClientEvent::OnExplode(), OnExplode(), FuelStation::OnExplosionEffects(), OnExplosionEffects(), CupidsBoltSimulation::OnFire(), SmokeSimulation::OnFire(), FireworksLauncherClientEvent::OnFired(), FireworksLauncher::OnFuseIgnitedClient(), CGame::OnRPC(), Ammo_40mm_Smoke_ColorBase::OnVariablesSynchronized(), ParticleCookingStart(), Inventory_Base::ParticleCookingStart(), ItemBase::ParticleTest(), EffectArea::PlaceParticles(), AmmoEffects::PlayAmmoParticle(), DestructionEffectBase::PlayParticle(), PlayParticle(), PlaySmokeParticle(), PlayVFX(), PMTF::PrintActiveStats(), ManBase::SetContaminatedEffectEx(), ItemBase::Spark(), ManBase::SpawnBreathVaporEffect(), ManBase::SpawnDrowningBubbles(), ActionDigInStash::SpawnParticleShovelRaise(), SpawnParticleShovelRaise(), EffectParticle::Start(), TestCleanup(), TestCreationSmallBlocking(), TestEvents(), PMTPlayback::TestOnePlaying(), TestOwnership(), Roadflare::UpdateActiveParticles(), BroomBase::UpdateParticle(), FlammableBase::UpdateParticle(), CrashBase::Wreck_Mi8_Crashed(), CrashBase::Wreck_SantasSleigh(), CrashBase::Wreck_UH1Y(), and CGame::~CGame().

◆ ParticleManagerSettings()

class ParticleManagerConstants ParticleManagerSettings ( int poolSize,
int flags = ParticleManagerSettingsFlags.NONE )

Settings given to ParticleManager on creation (in ctor)

Constructor (ctor)

Parameters
poolSizeint Size of pool (amount of created and reserved particles)
flagsint ParticleManagerSettingsFlags

Definition at line 1 of file ParticleManager.c.

36 {
37 }

Referenced by PMTF::CreatePMFixedBlocking(), GetInstance(), and TestEvents().

◆ Play() [1/2]

ParticleSource Play ( int particle_id,
Object parent_obj,
vector local_pos = "0 0 0",
vector local_ori = "0 0 0" )

Legacy function for backwards compatibility with 1.01 and below.

Definition at line 220 of file ParticleManager.c.

221 {
223 }
ParticleSource PlayOnObject(int particle_id, Object parent_obj, vector local_pos="0 0 0", vector local_ori="0 0 0", bool force_world_rotation=false)
Creates a particle emitter, attaches it on the given object and activates it.

References particle_id, and PlayOnObject().

◆ Play() [2/2]

ParticleSource Play ( int particle_id,
vector global_pos )

Legacy function for backwards compatibility with 1.01 and below.

Definition at line 245 of file ParticleManager.c.

246 {
248 }
ParticleSource PlayInWorld(int particle_id, vector global_pos)
Creates a particle emitter on the given position and activates it.

References particle_id, and PlayInWorld().

◆ PlayInWorld()

ParticleSource PlayInWorld ( int particle_id,
vector global_pos )

Creates a particle emitter on the given position and activates it.

Parameters
particle_idint Particle ID registered in ParticleList
global_posVector Position where the particel will be created
Returns
ParticleSource Created particle instance

Definition at line 231 of file ParticleManager.c.

232 {
234 }
ParticleSource PlayInWorldEx(int particle_id, Object parent_obj, vector global_pos, vector global_ori="0 0 0", bool force_world_rotation=false)

References particle_id, and PlayInWorldEx().

Referenced by Play().

◆ PlayInWorldEx()

ParticleSource PlayInWorldEx ( int particle_id,
Object parent_obj,
vector global_pos,
vector global_ori = "0 0 0",
bool force_world_rotation = false )

Definition at line 236 of file ParticleManager.c.

References CreateParticle(), and particle_id.

Referenced by PlayInWorld().

◆ PlayOnObject()

ParticleSource PlayOnObject ( int particle_id,
Object parent_obj,
vector local_pos = "0 0 0",
vector local_ori = "0 0 0",
bool force_world_rotation = false )

Creates a particle emitter, attaches it on the given object and activates it.

Parameters
particle_idint Particle ID registered in ParticleList
parent_objObject Instance on which this particle will be attached
local_posvector Attachment position local to the parent (Optional)
local_orivector Orientation local to the parent (Pitch, Yaw, Roll in degrees) (Optional)
force_world_rotationbool Forces particle's orientation to rotate relative to the world and not with the object (Optional)
Returns
ParticleSource Created particle instance

Definition at line 212 of file ParticleManager.c.

References CreateParticle(), and particle_id.

Referenced by Play().

◆ PlayParticleById()

ParticleSource PlayParticleById ( int id,
array< vector > position )

QoL function for when only one particle is needed using script ParticleList, strongly recommend to read comments for PlayParticles as well.

Parameters
idint ID of particle registered in ParticleList
positionsarray<vector> Positions of particles
Returns
ParticleSource The resulting particle

Definition at line 358 of file ParticleManager.c.

359 {
362
363 if (tempArr.Count() > 0)
364 return tempArr[0];
365 else
366 return null;
367 }
proto native int PlayParticles(out array< ParticleSource > particles, string path, notnull array< vector > positions, int count=1)
QoL function for when wanting to play a particle at a position right away.

References ParticleList::GetParticleFullPath(), and PlayParticles().

◆ PlayParticles()

proto native int PlayParticles ( out array< ParticleSource > particles,
string path,
notnull array< vector > positions,
int count = 1 )

QoL function for when wanting to play a particle at a position right away.

Parameters
particlesarray<ParticleSource> The resulting particles if an array is given
pathstring Path of particle effect
positionsarray<vector> Positions of particles
countint Amount of particles to create at this position
Returns
int Amount of particles created in this frame, if the ParticleManager is still allocating while this is called and virtual particles are enabled, the overflow particles will be virtual instead and not given in the out array

Referenced by PlayParticleById(), and PlayParticlesById().

◆ PlayParticlesById()

array< ParticleSource > PlayParticlesById ( int id,
array< vector > positions,
int count )

QoL function using script ParticleList, strongly recommend to read comments for PlayParticles as well.

Parameters
idint ID of particle registered in ParticleList
positionsarray<vector> Positions of particles
countint Amount of particles to create at this position
Returns
array<ParticleSource> The resulting particles - Read particles param of PlayParticles

Definition at line 345 of file ParticleManager.c.

References ParticleList::GetParticleFullPath(), and PlayParticles().

◆ SetName()

proto native void SetName ( string name)

Set a name for the ParticleManager to identify it more easily.

Parameters
namestring Name for ParticleManager

◆ SetScriptEvents()

proto void SetScriptEvents ( Managed events)
private

Set the events.

Parameters
eventsManaged The events to set

◆ ~ParticleManager()

dtor

Definition at line 89 of file ParticleManager.c.

90 {
91 }

◆ ~ParticleManagerSettings()

dtor

Definition at line 40 of file ParticleManager.c.

41 {
42 }

Variable Documentation

◆ FLAGS

Definition at line 41 of file ParticleManager.c.

◆ g_ParticleManager

class ParticleManagerEvents g_ParticleManager

Has a fixed pool of precreated and reserved particles.

Static ParticleManager

Referenced by CleanupInstance(), and GetInstance().

◆ POOL_SIZE

const int POOL_SIZE = 10000
static

Definition at line 40 of file ParticleManager.c.