void CBasePlayer::CalcObserverView( Vector& eyeOrigin, QAngle& eyeAngles, float& fov ) { #if defined( CLIENT_DLL ) switch ( GetObserverMode() ) { case OBS_MODE_DEATHCAM : CalcDeathCamView( eyeOrigin, eyeAngles, fov ); break; case OBS_MODE_ROAMING : // just copy current position without view offset case OBS_MODE_FIXED : CalcRoamingView( eyeOrigin, eyeAngles, fov ); break; case OBS_MODE_IN_EYE : CalcInEyeCamView( eyeOrigin, eyeAngles, fov ); break; case OBS_MODE_CHASE : CalcChaseCamView( eyeOrigin, eyeAngles, fov ); break; case OBS_MODE_FREEZECAM : CalcFreezeCamView( eyeOrigin, eyeAngles, fov ); break; } #else // on server just copy target postions, final view positions will be calculated on client VectorCopy( EyePosition(), eyeOrigin ); VectorCopy( EyeAngles(), eyeAngles ); #endif }
void C_HLTVCamera::CalcView(Vector& origin, QAngle& angles, float& fov) { if ( m_bEntityPacketReceived ) { // try to fixup movment pareents FixupMovmentParents(); m_bEntityPacketReceived = false; } if ( m_iCameraMan > 0 ) { C_BasePlayer *pCameraMan = UTIL_PlayerByIndex( m_iCameraMan ); if ( pCameraMan ) { float zNear,zFar; pCameraMan->CalcView( origin, angles, zNear, zFar, fov ); pCameraMan->CalcViewModelView( origin, angles ); return; } } switch ( m_nCameraMode ) { case OBS_MODE_ROAMING : CalcRoamingView( origin, angles, fov ); break; case OBS_MODE_FIXED : CalcFixedView( origin, angles, fov ); break; case OBS_MODE_IN_EYE : CalcInEyeCamView( origin, angles, fov ); break; case OBS_MODE_CHASE : CalcChaseCamView( origin, angles, fov ); break; } }