void CBaseViewModel::CalcIronsights( Vector &pos, QAngle &ang )
{
	CBaseCombatWeapon *pWeapon = GetOwningWeapon();

	if (!pWeapon)
		return;

	//get delta time for interpolation
	float delta = (gpGlobals->curtime - pWeapon->m_flIronsightedTime) * 2.5f; //modify this value to adjust how fast the interpolation is
	float exp = (pWeapon->IsIronsighted()) ?
		(delta > 1.0f) ? 1.0f : delta : //normal blending
		(delta > 1.0f) ? 0.0f : 1.0f - delta; //reverse interpolation

	if (exp <= 0.001f) //fully not ironsighted; save performance
		return;

	Vector newPos = pos;
	QAngle newAng = ang;

	Vector vForward, vRight, vUp, vOffset;
	AngleVectors(newAng, &vForward, &vRight, &vUp);
	vOffset = pWeapon->GetIronsightPositionOffset();

	newPos += vForward * vOffset.x;
	newPos += vRight * vOffset.y;
	newPos += vUp * vOffset.z;
	newAng += pWeapon->GetIronsightAngleOffset();
	//fov is handled by CBaseCombatWeapon

	pos += (newPos - pos) * exp;
	ang += (newAng - ang) * exp;
}
//BG2 -Added for Iron Sights Testing. Credits to Jorg for the code. -HairyPotter
void CBaseViewModel::CalcIronsights( Vector &pos, QAngle &ang )
{
	//CBaseCombatWeapon *pWeapon = GetOwningWeapon();
	CBaseCombatWeapon *pWeapon = m_hWeapon.Get();
 
	if ( !pWeapon )
		return;
 
	//get delta time for interpolation
	float time = pWeapon->IsIronsighted() ? IRONSIGHTS_ANGLE_IN_TIME : IRONSIGHTS_ANGLE_OUT_TIME;
	float delta( ( gpGlobals->curtime - pWeapon->m_flIronsightedTime ) / time );
	float exp = ( pWeapon->IsIronsighted() ) ? 
		( delta > 1.0f ) ? 1.0f : delta : //normal blending
		( delta > 1.0f ) ? 0.0f : 1.0f - delta; //reverse interpolation
 
	if( exp <= 0.0f ) //fully not ironsighted; save performance
		return;
 
	if( exp > 1.0f )
		exp = 1.0f;

	Vector newPos = pos;
	QAngle newAng = ang;
 
	Vector vForward, vRight, vUp, vOffset;
	AngleVectors( newAng, &vForward, &vRight, &vUp );
	vOffset = pWeapon->GetIronsightPositionOffset();
 
	newPos += vForward * vOffset.x;
	newPos += vRight * vOffset.y;
	newPos += vUp * vOffset.z;
	newAng += pWeapon->GetIronsightAngleOffset(); //This also handles the pitch...
	//fov is handled by CBaseCombatWeapon
 
	pos += ( newPos - pos ) * exp;
	ang += ( newAng - ang ) * exp;
}