bool CSDKPlayerShared::IsAimedIn() const { if (IsDiving() || IsRolling()) return false; if (GetActiveSDKWeapon() && GetActiveSDKWeapon()->IsThrowingGrenade()) return false; return m_bAimedIn; }
void CSDKPlayer::MakeTracer( const Vector &vecTracerSrc, const trace_t &tr, int iTracerType ) { #ifdef CLIENT_DLL CWeaponSDKBase *pWeapon = GetActiveSDKWeapon(); if (pWeapon) pWeapon->MakeTracer( vecTracerSrc, tr, iTracerType ); #endif }
void C_SDKPlayer::PlayReloadEffect() { // Only play the effect for other players. if ( this == C_SDKPlayer::GetLocalSDKPlayer() ) { Assert( false ); // We shouldn't have been sent this message. return; } // Get the view model for our current gun. CWeaponSDKBase *pWeapon = GetActiveSDKWeapon(); if ( !pWeapon ) return; // The weapon needs two models, world and view, but can only cache one. Synthesize the other. const CSDKWeaponInfo &info = pWeapon->GetSDKWpnData(); const model_t *pModel = modelinfo->GetModel( modelinfo->GetModelIndex( info.szViewModel ) ); if ( !pModel ) return; CStudioHdr studioHdr( modelinfo->GetStudiomodel( pModel ), mdlcache ); if ( !studioHdr.IsValid() ) return; // Find the reload animation. for ( int iSeq=0; iSeq < studioHdr.GetNumSeq(); iSeq++ ) { mstudioseqdesc_t *pSeq = &studioHdr.pSeqdesc( iSeq ); if ( pSeq->activity == ACT_VM_RELOAD ) { float poseParameters[MAXSTUDIOPOSEPARAM]; memset( poseParameters, 0, sizeof( poseParameters ) ); float cyclesPerSecond = Studio_CPS( &studioHdr, *pSeq, iSeq, poseParameters ); // Now read out all the sound events with their timing for ( int iEvent=0; iEvent < pSeq->numevents; iEvent++ ) { //mstudioevent_t *pevent = (mstudioevent_for_client_server_t*)pSeq.pEvent(iEvent ); mstudioevent_t *pEvent = (mstudioevent_for_client_server_t*)pSeq->pEvent( iEvent ); if ( pEvent->Event() == CL_EVENT_SOUND ) { CSDKSoundEvent event; event.m_SoundName = pEvent->options; event.m_flEventTime = gpGlobals->curtime + pEvent->cycle / cyclesPerSecond; m_SoundEvents.AddToTail( event ); } } break; } } }
void CSDKPlayer::DoMuzzleFlash() { #ifdef CLIENT_DLL if (prediction->InPrediction() && !prediction->IsFirstTimePredicted()) return; C_SDKPlayer* pLocalPlayer = C_SDKPlayer::GetLocalSDKPlayer(); C_WeaponSDKBase* pActiveWeapon = GetActiveSDKWeapon(); if (pLocalPlayer) { if (pLocalPlayer == this && !::input->CAM_IsThirdPerson() || pLocalPlayer->GetObserverMode() == OBS_MODE_IN_EYE && pLocalPlayer->GetObserverTarget() == this) { for ( int i = 0; i < MAX_VIEWMODELS; i++ ) { CBaseViewModel *vm = GetViewModel( i ); if ( !vm ) continue; vm->DoMuzzleFlash(); } } else if (pActiveWeapon) { // Force world model so the attachments work. pActiveWeapon->SetModelIndex( pActiveWeapon->GetWorldModelIndex() ); switch (pActiveWeapon->GetWeaponType()) { case WT_PISTOL: default: pActiveWeapon->ParticleProp()->Create( "muzzleflash_pistol", PATTACH_POINT_FOLLOW, "muzzle" ); break; case WT_SMG: pActiveWeapon->ParticleProp()->Create( "muzzleflash_smg", PATTACH_POINT_FOLLOW, "muzzle" ); break; case WT_RIFLE: pActiveWeapon->ParticleProp()->Create( "muzzleflash_rifle", PATTACH_POINT_FOLLOW, "muzzle" ); break; case WT_SHOTGUN: pActiveWeapon->ParticleProp()->Create( "muzzleflash_shotgun", PATTACH_POINT_FOLLOW, "muzzle" ); break; } } } #endif }
CWeaponSDKBase* CSDKPlayer::SDKAnim_GetActiveWeapon() { return GetActiveSDKWeapon(); }
void CSDKPlayer::UpdateThirdCamera(const Vector& vecEye, const QAngle& angEye) { if (!IsInThirdPerson()) return; CWeaponSDKBase * pWeapon = NULL; if (GetActiveWeapon() != NULL){ pWeapon = GetActiveSDKWeapon(); } Assert(pWeapon); #ifdef CLIENT_DLL if (m_vecThirdCamera.DistTo(vecEye) < da_cam_fade_distance.GetFloat()){ m_flCurrentAlphaVal = Approach(da_cam_fade_alpha_val.GetFloat(), m_flCurrentAlphaVal, 500.0f * gpGlobals->frametime); if (GetRenderMode() != kRenderTransTexture){ SetRenderMode(kRenderTransTexture); } SetRenderColorA(m_flCurrentAlphaVal); if (pWeapon){ if (pWeapon->GetRenderMode() != kRenderTransTexture){ pWeapon->SetRenderMode(kRenderTransTexture); } pWeapon->SetRenderColorA(m_flCurrentAlphaVal); } }else{ m_flCurrentAlphaVal = Approach(255.0f, m_flCurrentAlphaVal, 500.0f * gpGlobals->frametime); if (GetRenderMode() != kRenderNormal){ SetRenderMode(kRenderNormal); } SetRenderColorA(m_flCurrentAlphaVal); if (pWeapon){ if (pWeapon->GetRenderMode() != kRenderNormal){ pWeapon->SetRenderMode(kRenderNormal); } pWeapon->SetRenderColorA(m_flCurrentAlphaVal); } } #endif m_vecThirdCamera = CalculateThirdPersonCameraPosition(vecEye, angEye); Vector vecShoot; AngleVectors(angEye, &vecShoot); // Trace to see where the camera is pointing trace_t tr; UTIL_TraceLine( m_vecThirdCamera, m_vecThirdCamera + vecShoot * 99999, MASK_VISIBLE|CONTENTS_DEBRIS|CONTENTS_HITBOX, this, COLLISION_GROUP_NONE, &tr ); m_vecThirdTarget = tr.endpos; }