Particles In Code
Jump to navigation
Jump to search
Precaching
Particle systems must be precached before they can be used. This is done by listing the PCF containing them in particles_manifest.txt
, then making this call:
PrecacheParticleSystem( "your_particle_effect_name" );
Dispatching
Particles systems are "dispatched" on the client. They are always associated with an entity.

StopParticleEffects( CBaseEntity* pEntity )
. But you cannot otherwise directly control the lifespan of a system: it will choose when it terminates.Simple
#include "particle_parse.h"
void DispatchParticleEffect( const char *pszParticleName, Vector vecOrigin, QAngle vecAngles, CBaseEntity *pEntity )
void DispatchParticleEffect( const char *pszParticleName, ParticleAttachment_t iAttachType, CBaseEntity *pEntity,
int iAttachmentPoint, bool bResetAllParticlesOnEntity )
The first function creates the system at some arbitrary world co-ordinates. The second enables you to spawn it at an attachment point and/or make it follow the entity.

Values for ParticleAttachment_t
are:
PATTACH_ABSORIGIN
PATTACH_ABSORIGIN_FOLLOW
- Spawn at (and optionally follow) the entity's origin.
PATTACH_POINT
PATTACH_POINT_FOLLOW
- Spawn at (and optionally follow) an attachment point on the entity's model.
PATTACH_CUSTOMORIGIN
- Spawn at a given origin.
PATTACH_WORLDORIGIN
- Don't attach to an entity. Use with caution.
Complex
If you need to control the system after it spawns, the helper functions above won't do. Instead:
#include "particles_new.h"
CNewParticleEffect* pEffect = ParticleProp()->Create( "rail_shot", PATTACH_ABSORIGIN );
pEffect->SetControlPoint( 1, vecSomeVector );
See also CNewParticleEffect
.