void CBasePlayer::CalcPlayerView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov ) { #if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) { // FIXME: Move into prediction view->DriftPitch(); } #endif VectorCopy( EyePosition(), eyeOrigin ); #ifdef SIXENSE if ( g_pSixenseInput->IsEnabled() ) { VectorCopy( EyeAngles() + GetEyeAngleOffset(), eyeAngles ); } else { VectorCopy( EyeAngles(), eyeAngles ); } #else VectorCopy( EyeAngles(), eyeAngles ); #endif #if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) #endif { SmoothViewOnStairs( eyeOrigin ); } // Snack off the origin before bob + water offset are applied Vector vecBaseEyePosition = eyeOrigin; CalcViewRoll( eyeAngles ); // Apply punch angle VectorAdd( eyeAngles, m_Local.m_vecPunchAngle, eyeAngles ); #if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) { // Shake it up baby! vieweffects->CalcShake(); vieweffects->ApplyShake( eyeOrigin, eyeAngles, 1.0 ); } #endif #if defined( CLIENT_DLL ) // Apply a smoothing offset to smooth out prediction errors. Vector vSmoothOffset; GetPredictionErrorSmoothingVector( vSmoothOffset ); eyeOrigin += vSmoothOffset; m_flObserverChaseDistance = 0.0; #endif // calc current FOV fov = GetFOV(); }
//----------------------------------------------------------------------------- // Purpose: The main view setup function for vehicles //----------------------------------------------------------------------------- void CBasePlayer::CalcVehicleView( #if defined( CLIENT_DLL ) IClientVehicle *pVehicle, #else IServerVehicle *pVehicle, #endif Vector& eyeOrigin, QAngle& eyeAngles, float& zNear, float& zFar, float& fov ) { Assert( pVehicle ); // Start with our base origin and angles CacheVehicleView(); eyeOrigin = m_vecVehicleViewOrigin; eyeAngles = m_vecVehicleViewAngles; #if defined( CLIENT_DLL ) fov = GetFOV(); // Allows the vehicle to change the clip planes pVehicle->GetVehicleClipPlanes( zNear, zFar ); #endif // Snack off the origin before bob + water offset are applied Vector vecBaseEyePosition = eyeOrigin; CalcViewRoll( eyeAngles ); // Apply punch angle VectorAdd( eyeAngles, m_Local.m_vecPunchAngle, eyeAngles ); #if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) { // Shake it up baby! vieweffects->CalcShake(); vieweffects->ApplyShake( eyeOrigin, eyeAngles, 1.0 ); } #endif }
// This is mostly copy paste from C_BasePlayer::CalcPlayerView void C_NEOPlayer::CalcPlayerView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov ) { if ( !prediction->InPrediction() ) { // FIXME: Move into prediction view->DriftPitch(); } VectorCopy( EyePosition(), eyeOrigin ); VectorCopy( EyeAngles(), eyeAngles ); if ( !prediction->InPrediction() ) { SmoothViewOnStairs( eyeOrigin ); } // Snack off the origin before bob + water offset are applied Vector vecBaseEyePosition = eyeOrigin; CalcViewRoll( eyeAngles ); // Apply punch angle VectorAdd( eyeAngles, m_Local.m_vecPunchAngle, eyeAngles ); if ( !prediction->InPrediction() ) { // Shake it up baby! vieweffects->CalcShake(); vieweffects->ApplyShake( eyeOrigin, eyeAngles, 1.0 ); } // Apply a smoothing offset to smooth out prediction errors. Vector vSmoothOffset; GetPredictionErrorSmoothingVector( vSmoothOffset ); eyeOrigin += vSmoothOffset; m_flObserverChaseDistance = 0.0; // This is what they've added switch ( m_iUnknown ) { case 0: eyeAngles.z = 0.f; break; case 1: eyeAngles.z = m_flUnknown3 * 20.f - 20.f; break; case 2: eyeAngles.z = -20.f; break; case 3: eyeAngles.z = -20.f * m_flUnknown3; break; case 4: eyeAngles.z = m_flUnknown3; break; case 5: eyeAngles.z = 20.f; break; case 6: eyeAngles.z = 20.f * m_flUnknown3; break; } // calc current FOV fov = GetFOV(); }