void C_ASW_Shaman::UpdateEffects() { if ( !m_hHealingTarget.Get() || GetHealth() <= 0 ) { if ( m_pHealEffect ) { m_pHealEffect->StopEmission(); m_pHealEffect = NULL; } return; } if ( m_pHealEffect ) { if ( m_pHealEffect->GetControlPointEntity( 1 ) != m_hHealingTarget.Get() ) { m_pHealEffect->StopEmission(); m_pHealEffect = NULL; } } if ( !m_pHealEffect ) { m_pHealEffect = ParticleProp()->Create( "shaman_heal_attach", PATTACH_POINT_FOLLOW, "nozzle" ); // "heal_receiver" } Assert( m_pHealEffect ); if ( m_pHealEffect->GetControlPointEntity( 1 ) == NULL ) { C_BaseEntity *pTarget = m_hHealingTarget.Get(); Vector vOffset( 0.0f, 0.0f, pTarget->WorldSpaceCenter().z - pTarget->GetAbsOrigin().z ); ParticleProp()->AddControlPoint( m_pHealEffect, 1, pTarget, PATTACH_ABSORIGIN_FOLLOW, NULL, vOffset ); m_pHealEffect->SetControlPointOrientation( 0, pTarget->Forward(), -pTarget->Left(), pTarget->Up() ); } }