//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void CNPC_GroundTurret::ProjectBeam( const Vector &vecStart, const Vector &vecDir, int width, int brightness, float duration ) { CBeam *pBeam; pBeam = CBeam::BeamCreate( GROUNDTURRET_BEAM_SPRITE, width ); if ( !pBeam ) return; trace_t tr; AI_TraceLine( vecStart, vecStart + vecDir * m_flSensingDist, MASK_SHOT, this, COLLISION_GROUP_NONE, &tr ); pBeam->SetStartPos( tr.endpos ); pBeam->SetEndPos( tr.startpos ); pBeam->SetWidth( width ); pBeam->SetEndWidth( 0.1 ); pBeam->SetFadeLength( 16 ); pBeam->SetBrightness( brightness ); pBeam->SetColor( 0, 145+random->RandomInt( -16, 16 ), 255 ); pBeam->RelinkBeam(); pBeam->LiveForTime( duration ); }
//--------------------------------------------------------- //--------------------------------------------------------- void CNPC_GroundTurret::MakeTracer( const Vector &vecTracerSrc, const trace_t &tr, int iTracerType ) { #if 1 //BaseClass::MakeTracer( vecTracerSrc, tr, iTracerType ); UTIL_Tracer( vecTracerSrc, tr.endpos, 0, TRACER_DONT_USE_ATTACHMENT, 5000, true, "AR2Tracer" ); #else CBeam *pBeam; int width = 2; pBeam = CBeam::BeamCreate( GROUNDTURRET_BEAM_SPRITE, width ); if ( !pBeam ) return; pBeam->SetStartPos( vecTracerSrc ); pBeam->SetEndPos( tr.endpos ); pBeam->SetWidth( width ); pBeam->SetEndWidth( width / 4.0f ); pBeam->SetBrightness( 100 ); pBeam->SetColor( 0, 145+random->RandomInt( -16, 16 ), 255 ); pBeam->RelinkBeam(); pBeam->LiveForTime( random->RandomFloat( 0.2f, 0.5f ) ); #endif }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponGaussGun::DrawBeam( const Vector &startPos, const Vector &endPos, float width, bool useMuzzle ) { CBasePlayer *pOwner = ToBasePlayer(GetOwner()); if (!pOwner) return; //Check to store off our view model index if (m_hViewModel == NULL) { CBaseViewModel *vm = pOwner->GetViewModel(); if (vm) m_hViewModel.Set(vm); } //Draw the main beam shaft CBeam *pBeam = CBeam::BeamCreate( GAUSS_BEAM_SPRITE, width ); if ( useMuzzle ) { pBeam->PointEntInit( endPos, m_hViewModel ); pBeam->SetEndAttachment( 1 ); pBeam->SetWidth( width / 4.0f ); pBeam->SetEndWidth( width ); } else { pBeam->SetStartPos( startPos ); pBeam->SetEndPos( endPos ); pBeam->SetWidth( width ); pBeam->SetEndWidth( width / 4.0f ); } pBeam->SetBrightness( 255 ); pBeam->SetColor( 255, 145+random->RandomInt( -16, 16 ), 0 ); pBeam->RelinkBeam(); pBeam->LiveForTime( 0.1f ); //Draw electric bolts along shaft for ( int i = 0; i < 3; i++ ) { pBeam = CBeam::BeamCreate( GAUSS_BEAM_SPRITE, (width/2.0f) + i ); if ( useMuzzle ) { pBeam->PointEntInit( endPos, m_hViewModel ); pBeam->SetEndAttachment( 1 ); } else { pBeam->SetStartPos( startPos ); pBeam->SetEndPos( endPos ); } pBeam->SetBrightness( random->RandomInt( 64, 255 ) ); pBeam->SetColor( 255, 255, 150+random->RandomInt( 0, 64 ) ); pBeam->RelinkBeam(); pBeam->LiveForTime( 0.1f ); pBeam->SetNoise( 1.6f * i ); pBeam->SetEndWidth( 0.1f ); } }