void C_ParticleSmokeGrenade::Start(CParticleMgr *pParticleMgr, IPrototypeArgAccess *pArgs) { if(!pParticleMgr->AddEffect( &m_ParticleEffect, this )) return; m_SmokeTrail.Start(pParticleMgr, pArgs); m_SmokeTrail.m_ParticleLifetime = 0.5; m_SmokeTrail.SetSpawnRate(40); m_SmokeTrail.m_MinSpeed = 0; m_SmokeTrail.m_MaxSpeed = 0; m_SmokeTrail.m_StartSize = 3; m_SmokeTrail.m_EndSize = 10; m_SmokeTrail.m_SpawnRadius = 0; m_SmokeTrail.SetLocalOrigin( GetAbsOrigin() ); for(int i=0; i < NUM_MATERIAL_HANDLES; i++) { char str[256]; Q_snprintf(str, sizeof( str ), "particle/particle_smokegrenade%d", i+1); m_MaterialHandles[i] = m_ParticleEffect.FindOrAddMaterial(str); } if( m_CurrentStage == 2 ) { FillVolume(); } // Go straight into "fill volume" mode if they want. if(pArgs) { if(pArgs->FindArg("-FillVolume")) { FillVolume(); } } m_bStarted = true; SetNextClientThink( CLIENT_THINK_ALWAYS ); #if CSTRIKE_DLL C_CSPlayer *pPlayer = C_CSPlayer::GetLocalCSPlayer(); if ( pPlayer ) { pPlayer->m_SmokeGrenades.AddToTail( this ); } #endif }
void C_ParticleSmokeGrenade::Start(CParticleMgr *pParticleMgr, IPrototypeArgAccess *pArgs) { if(!pParticleMgr->AddEffect( &m_ParticleEffect, this )) return; m_LifetimeCounter = 0; m_SmokeTrail.Start(pParticleMgr, pArgs); m_SmokeTrail.m_ParticleLifetime = 0.5; m_SmokeTrail.SetSpawnRate(40); m_SmokeTrail.m_MinSpeed = 0; m_SmokeTrail.m_MaxSpeed = 0; m_SmokeTrail.m_StartSize = 3; m_SmokeTrail.m_EndSize = 10; m_SmokeTrail.m_SpawnRadius = 0; m_SmokeTrail.SetLocalOrigin( GetAbsOrigin() ); for(int i=0; i < NUM_MATERIAL_HANDLES; i++) { char str[256]; Q_snprintf(str, sizeof( str ), "particle/particle_smokegrenade%d", i+1); m_MaterialHandles[i] = m_ParticleEffect.FindOrAddMaterial(str); } if( m_CurrentStage == 2 ) { FillVolume(); } // Go straight into "fill volume" mode if they want. if(pArgs) { if(pArgs->FindArg("-FillVolume")) { FillVolume(); } } m_bStarted = true; }