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(); }
const Vector& C_SDKPlayer::GetRenderOrigin( void ) { if ( IsRagdoll() ) { return m_pRagdoll->GetRagdollOrigin(); } else { static Vector origin = vec3_origin; origin = BaseClass::GetRenderOrigin(); //origin.z = origin.z - VEC_HULL_MAX.z + VEC_HULL_MAX.z * m_nModelScale / 100.0f; origin.z += VEC_HULL_MAX.z / 2.0f * (m_nModelScale / 100.0f - 1.0f); if (this == GetLocalSDKPlayer()) { Vector vSmoothOffset; GetPredictionErrorSmoothingVector( vSmoothOffset ); origin += Vector(vSmoothOffset.x, vSmoothOffset.y, 0); return origin; } else return origin; } }
// 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(); }