In view cone snippet: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
(Added Degrees conversion method)
Line 1: Line 1:
== Snippet ==
<pre>
<pre>


bool CMyEnt::InViewCone( const Vector &vecSpot, float tolerance )
bool CMyEnt::InViewCone( const Vector &vecSpot, float flTolerance )
{
{
     Vector los = ( vecSpot - GetAbsOrigin() );
     Vector los = ( vecSpot - GetAbsOrigin() );
Line 8: Line 9:
     Vector facingDir;
     Vector facingDir;
     AngleVectors( GetAbsAngles(), &facingDir );
     AngleVectors( GetAbsAngles(), &facingDir );
     float flDot = DotProduct( los, facingDir );
     float flDot = DotProduct( los, facingDir );


     if ( flDot > tolerance )
     if ( flDot > flTolerance )
return true;
return true;
     return false;
     return false;
}
}
</pre>
== Extra ==
To pass in an angle of degrees, you must convert it.
<pre>
//90 Degrees
flTolerance = cos( 90 );
bool bInCone = InViewCone( vOrigin, flTolerance );


</pre>
</pre>


[[Category:Snippets]]
[[Category:Snippets]]

Revision as of 17:05, 12 October 2009

Snippet


bool CMyEnt::InViewCone( const Vector &vecSpot, float flTolerance )
{
    Vector los = ( vecSpot - GetAbsOrigin() );
    los.z = 0;
    VectorNormalize( los );
    Vector facingDir;
    AngleVectors( GetAbsAngles(), &facingDir );

    float flDot = DotProduct( los, facingDir );

    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 );