In view cone snippet: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 4: | Line 4: | ||
bool CMyEnt::InViewCone( const Vector &vecSpot, float flTolerance ) | bool CMyEnt::InViewCone( const Vector &vecSpot, float flTolerance ) | ||
{ | { | ||
Vector | //Get the direction of origin in front of us | ||
Vector vDirection = ( vecSpot - GetAbsOrigin() ); | |||
VectorNormalize( | VectorNormalize( vDirection ); | ||
//Get our forward direction | |||
Vector vForward; | |||
AngleVectors( GetAbsAngles(), &vForward ); | |||
//Compute angle of both direction vectors | |||
float flDot = DotProduct( vDirection, vForward ); | |||
//Check if angle is within tolerance | |||
//-1 = opposite of forward direction | |||
//1 = matching forward direction | |||
//0 = 90 degrees | |||
if ( flDot > flTolerance ) | if ( flDot > flTolerance ) | ||
return true; | return true; | ||
Revision as of 18:01, 12 October 2009
Snippet
bool CMyEnt::InViewCone( const Vector &vecSpot, float flTolerance )
{
//Get the direction of origin in front of us
Vector vDirection = ( vecSpot - GetAbsOrigin() );
VectorNormalize( vDirection );
//Get our forward direction
Vector vForward;
AngleVectors( GetAbsAngles(), &vForward );
//Compute angle of both direction vectors
float flDot = DotProduct( vDirection, vForward );
//Check if angle is within tolerance
//-1 = opposite of forward direction
//1 = matching forward direction
//0 = 90 degrees
if ( flDot > flTolerance )
return true;
return false;
}
Extra
To pass in an angle of degrees, you must convert it.
//90 Degrees flTolerance = cos( 90 ); bool bInCone = InViewCone( vOrigin, flTolerance );