//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void C_TFProjectile_Rocket::CreateRocketTrails( void ) { if ( IsDormant() ) return; if ( enginetrace->GetPointContents( GetAbsOrigin() ) & MASK_WATER ) { ParticleProp()->Create( "rockettrail_underwater", PATTACH_POINT_FOLLOW, "trail" ); } else { ParticleProp()->Create( GetTrailParticleName(), PATTACH_POINT_FOLLOW, "trail" ); } if ( m_bCritical ) { switch( GetTeamNumber() ) { case TF_TEAM_RED: ParticleProp()->Create("critical_rocket_red", PATTACH_ABSORIGIN_FOLLOW); break; case TF_TEAM_BLUE: ParticleProp()->Create( "critical_rocket_blue", PATTACH_ABSORIGIN_FOLLOW ); break; case TF_TEAM_GREEN: ParticleProp()->Create("critical_rocket_green", PATTACH_ABSORIGIN_FOLLOW); break; case TF_TEAM_YELLOW: ParticleProp()->Create("critical_rocket_yellow", PATTACH_ABSORIGIN_FOLLOW); break; default: break; } } }
//----------------------------------------------------------------------------- // Purpose: // Input : updateType - //----------------------------------------------------------------------------- void CTFGrenadePipebombProjectile::OnDataChanged(DataUpdateType_t updateType) { BaseClass::OnDataChanged( updateType ); if ( updateType == DATA_UPDATE_CREATED ) { m_flCreationTime = gpGlobals->curtime; ParticleProp()->Create( GetTrailParticleName(), PATTACH_ABSORIGIN_FOLLOW ); m_bPulsed = false; CTFPipebombLauncher *pLauncher = dynamic_cast<CTFPipebombLauncher*>( m_hLauncher.Get() ); if ( pLauncher ) { pLauncher->AddPipeBomb( this ); } if ( m_bCritical ) { switch( GetTeamNumber() ) { case TF_TEAM_BLUE: if ( m_iType == TF_GL_MODE_REMOTE_DETONATE ) { ParticleProp()->Create( "critical_grenade_blue", PATTACH_ABSORIGIN_FOLLOW ); } else { ParticleProp()->Create( "critical_pipe_blue", PATTACH_ABSORIGIN_FOLLOW ); } break; case TF_TEAM_RED: if ( m_iType == TF_GL_MODE_REMOTE_DETONATE ) { ParticleProp()->Create( "critical_grenade_red", PATTACH_ABSORIGIN_FOLLOW ); } else { ParticleProp()->Create( "critical_pipe_red", PATTACH_ABSORIGIN_FOLLOW ); } break; default: break; } } } else if ( m_bTouched ) { //ParticleProp()->StopEmission(); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void C_TFProjectile_Rocket::CreateRocketTrails( void ) { if ( IsDormant() ) return; if ( enginetrace->GetPointContents( GetAbsOrigin() ) & MASK_WATER ) { ParticleProp()->Create( "rockettrail_underwater", PATTACH_POINT_FOLLOW, "trail" ); } else { ParticleProp()->Create( GetTrailParticleName(), PATTACH_POINT_FOLLOW, "trail" ); } if ( m_bCritical ) { if ( TFGameRules() && TFGameRules()->IsDeathmatch() ) { C_TFPlayer *pPlayer = ToTFPlayer(GetOwnerEntity()); if (pPlayer) { pPlayer->m_Shared.SetParticleToMercColor( ParticleProp()->Create("critical_rocket_dm", PATTACH_ABSORIGIN_FOLLOW) ); return; } ParticleProp()->Create("critical_rocket_red", PATTACH_ABSORIGIN_FOLLOW); } switch( GetTeamNumber() ) { case TF_TEAM_RED: ParticleProp()->Create("critical_rocket_red", PATTACH_ABSORIGIN_FOLLOW); break; case TF_TEAM_BLUE: ParticleProp()->Create("critical_rocket_blue", PATTACH_ABSORIGIN_FOLLOW ); break; case TF_TEAM_GREEN: ParticleProp()->Create("critical_rocket_green", PATTACH_ABSORIGIN_FOLLOW); break; case TF_TEAM_YELLOW: ParticleProp()->Create("critical_rocket_yellow", PATTACH_ABSORIGIN_FOLLOW); break; default: break; } } }