DIFF

CCTCursorNoObject.c

class CCTCursorNoObject : CCTBase
{
	protected float m_MaximalActionDistanceSq;
	
	void CCTCursorNoObject ( float maximal_target_distance )
	{
		m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
	}
	
	override bool Can( PlayerBase player, ActionTarget target )
	{	
		if ( !target )
			return false;
			
		if ( g_Game.IsServer() && g_Game.IsMultiplayer() )
			return true;
		
		vector playerHeadPos;
		MiscGameplayFunctions.GetHeadBonePos(player, playerHeadPos);
		
		float distanceRoot = vector.DistanceSq(target.GetCursorHitPos(), player.GetPosition());
		float distanceHead = vector.DistanceSq(target.GetCursorHitPos(), playerHeadPos);
		
		return ( distanceRoot <= m_MaximalActionDistanceSq || distanceHead <= m_MaximalActionDistanceSq );
	}
};