UTIL EntitiesAlongRay

From Valve Developer Community
Revision as of 01:31, 11 April 2011 by Stoopdapoop (talk | contribs) (Created page with 'This is a Utility function that when supplied a Ray_t will return an integer indicating the number of entities encountered along the ray, then will enumerate and place them i…')

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This is a Utility function that when supplied a Ray_t will return an integer indicating the number of entities encountered along the ray, then will enumerate and place them into an array.

You can either specify an array, and the size of the array, and a mask for which encountered entities will be included in the array, or you can simply supply a Ray_t and an pointer to an instance of the CFlaggedEntitiesEnum class.

Function Headers

int UTIL_EntitiesAlongRay( const Ray_t &ray, CFlaggedEntitiesEnum *pEnum )

int UTIL_EntitiesAlongRay( CBaseEntity **pList, int listMax, const Ray_t &ray, int flagMask )


Usage

		int nCount = UTIL_EntitiesAlongRay( list, 1024, ray, FL_NPC | FL_CLIENT );
		for ( int i = 0; i < nCount; i++ )
		{
			if ( !IsAttractiveTarget( list[i] ) )
				continue;

			VectorSubtract( list[i]->WorldSpaceCenter(), vecStartPoint, vecDelta );
			distance = VectorNormalize( vecDelta );
			flDot = DotProduct( vecDelta, vecVelDir );
			
			if ( flDot > flMaxDot )
			{
				if ( distance < flBestDist )
				{
					pBestTarget = list[i];
					flBestDist = distance;
				}
			}
		}
	}