//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- float CTFArrowPanel::GetAngleRotation( void ) { float flRetVal = 0.0f; C_TFPlayer *pPlayer = ToTFPlayer( C_BasePlayer::GetLocalPlayer() ); C_BaseEntity *pEnt = m_hEntity.Get(); if ( pPlayer && pEnt ) { QAngle vangles; Vector eyeOrigin; float zNear, zFar, fov; pPlayer->CalcView( eyeOrigin, vangles, zNear, zFar, fov ); Vector vecFlag = pEnt->WorldSpaceCenter() - eyeOrigin; vecFlag.z = 0; vecFlag.NormalizeInPlace(); Vector forward, right, up; AngleVectors( vangles, &forward, &right, &up ); forward.z = 0; right.z = 0; forward.NormalizeInPlace(); right.NormalizeInPlace(); float dot = DotProduct( vecFlag, forward ); float angleBetween = acos( dot ); dot = DotProduct( vecFlag, right ); if ( dot < 0.0f ) { angleBetween *= -1; } flRetVal = RAD2DEG( angleBetween ); } return flRetVal; }