void CDAViewRender::PerformSlowMoEffect( const CViewSetup &view ) { C_SDKPlayer *pPlayer = C_SDKPlayer::GetLocalOrSpectatedPlayer(); if ( !pPlayer ) return; if (!da_postprocess_shaders.GetBool()) return; if (!pPlayer->IsAlive()) m_flStyleLerp = 0; ConVarRef da_postprocess_slowmo("da_postprocess_slowmo"); ConVarRef da_postprocess_deathcam("da_postprocess_deathcam"); ConVarRef da_postprocess_skill("da_postprocess_skill"); ConVarRef da_postprocess_vr("da_postprocess_vr"); da_postprocess_vr.SetValue(UseVR()); if (pPlayer->IsStyleSkillActive()) m_flStyleLerp = Approach(1, m_flStyleLerp, gpGlobals->frametime*2); else m_flStyleLerp = Approach(0, m_flStyleLerp, gpGlobals->frametime); bool bShowPostProcess = false; if (pPlayer->GetSlowMoMultiplier() < 1) bShowPostProcess = true; else if (m_flStyleLerp) bShowPostProcess = true; else if (!pPlayer->IsAlive() && pPlayer->GetObserverMode() == OBS_MODE_FREEZECAM) bShowPostProcess = true; else if (da_postprocess_compare.GetInt() || da_postprocess_slowmo.GetInt()) bShowPostProcess = true; if ( bShowPostProcess ) { IMaterial *pMaterial = materials->FindMaterial( "shaders/slowmo", TEXTURE_GROUP_CLIENT_EFFECTS, true ); if ( !IsErrorMaterial(pMaterial) ) { if (pPlayer->IsAlive()) da_postprocess_deathcam.SetValue(false); else da_postprocess_deathcam.SetValue(true); da_postprocess_skill.SetValue(m_flStyleLerp); if (da_postprocess_compare.GetInt() == 1) DrawScreenEffectMaterial( pMaterial, view.x, view.y, view.width/2, view.height ); else DrawScreenEffectMaterial( pMaterial, view.x, view.y, view.width, view.height ); } } }
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 }
bool CSDKSpectatorGUI::NeedsUpdate( void ) { C_SDKPlayer *player = C_SDKPlayer::GetLocalSDKPlayer(); if ( !player ) return false; if ( m_nLastTime != (int)SDKGameRules()->GetMapRemainingTime() ) return true; if ( m_nLastSpecMode != player->GetObserverMode() ) return true; if ( m_nLastSpecTarget != player->GetObserverTarget() ) return true; return BaseClass::NeedsUpdate(); }
bool CSDKSpectatorGUI::NeedsUpdate( void ) { C_SDKPlayer *player = C_SDKPlayer::GetLocalSDKPlayer(); if ( !player ) return false; //if ( m_nLastTime != (int)ClassicGameRules()->GetPhaseTime()) // return true; if (m_nLastPhaseID != ClassicGameRules()->GetCurrentPhaseID ()) return true; if ( m_nLastSpecMode != player->GetObserverMode() ) return true; if ( m_nLastSpecTarget != player->GetObserverTarget() ) return true; return BaseClass::NeedsUpdate(); }