//----------------------------------------------------------------------------- // Purpose: Red Spark effects //----------------------------------------------------------------------------- void BuildSparksRedCallback( const CEffectData &data ) { Vector vecOrigin = data.m_vOrigin; QAngle vecAngles = data.m_vAngles; // Angle them up vecAngles[PITCH] = -90; Vector vecForward; AngleVectors( vecAngles, &vecForward ); // Sparks FX_Sparks( vecOrigin, 2, 4, vecForward, 2.5, 48, 64, "effects/spark2" ); }
void CASW_Weapon_Welder::ProcessMuzzleFlashEvent() { // attach muzzle flash particle system effect int iAttachment = GetMuzzleAttachment(); if ( iAttachment > 0 ) { Vector sparkOrigin, sparkNormal; QAngle sparkAngles; if ( GetAttachment( iAttachment, sparkOrigin, sparkAngles ) ) { AngleVectors(sparkAngles, &sparkNormal); FX_Sparks( sparkOrigin, 1, 1, sparkNormal, 3, 32, 128 ); // disabled for now } } C_BaseCombatWeapon::ProcessMuzzleFlashEvent(); OnMuzzleFlashed(); }
void CASW_Weapon_Chainsaw::UpdateEffect( const Vector &startPoint, const Vector &endPoint ) { //if ( !m_hBeam ) //{ //CreateEffect(); //} //if ( m_hBeam ) //{ //m_hBeam->SetStartPos( endPoint ); //} CASW_Marine* pOwner = GetMarine(); if (!pOwner) return; // make sparks come out at end point Vector vecNormal = startPoint - endPoint; vecNormal.NormalizeInPlace(); #ifndef CLIENT_DLL CEffectData data; data.m_vOrigin = endPoint; data.m_vNormal = vecNormal; CPASFilter filter( data.m_vOrigin ); filter.SetIgnorePredictionCull(true); if (gpGlobals->maxClients > 1 && pOwner->IsInhabited() && pOwner->GetCommander()) { // multiplayer game, where this marine is currently being controlled by a client, who will spawn his own effect // so just make the beam effect for all other clients filter.RemoveRecipient(pOwner->GetCommander()); } DispatchEffect( filter, 0.0, "ASWWelderSparks", data ); #else FX_Sparks( endPoint, 1, 2, vecNormal, 5, 32, 160 ); #endif if ( m_hNoise ) { m_hNoise->SetStartPos( endPoint ); } }
//----------------------------------------------------------------------------- // Purpose: Large dust impact //----------------------------------------------------------------------------- void BuildImpactCallback( const CEffectData &data ) { Vector vecOrigin = data.m_vOrigin; QAngle vecAngles = data.m_vAngles; Vector vecNormal = data.m_vNormal; FX_BuildImpact( vecOrigin, vecAngles, vecNormal, 1 ); // Randomly play sparks if ( RandomFloat() > 0.35 ) { // Angle them up vecAngles[PITCH] = -90; Vector vecForward; AngleVectors( vecAngles, &vecForward ); // Sparks FX_Sparks( vecOrigin, 2, 4, vecForward, 2.5, 48, 64 ); } }
//----------------------------------------------------------------------------- // Purpose: Draw a cheap glow quad at our impact point (with sparks) //----------------------------------------------------------------------------- void StunstickImpactCallback( const CEffectData &data ) { float scale = random->RandomFloat( 16, 32 ); FX_AddQuad( data.m_vOrigin, data.m_vNormal, scale, scale*2.0f, 1.0f, 1.0f, 0.0f, 0.0f, random->RandomInt( 0, 360 ), 0, Vector( 1.0f, 1.0f, 1.0f ), 0.1f, "sprites/light_glow02_add", 0 ); FX_Sparks( data.m_vOrigin, 1, 2, data.m_vNormal, 6, 64, 256 ); }