//=============================================================================
// KFAIController_ZedDAR
//=============================================================================
// Base AI controller for all ranged units.
//=============================================================================
// Killing Floor 2
// Copyright (C) 2018 Tripwire Interactive LLC
//=============================================================================
class KFAIController_Ranged extends KFAIController_Monster
	abstract;

var const bool bDebugAimError;
var const bool bCanLeadTarget;

/** If bDebugAimError is true, this will render the projectile's trajectory with no aimerror in green and simulate 7 more shots, rendering
*  those trajectories in red (using aimerror) */
function DebugAimError(name SocketName, optional float AimError = 0)
{
	local int			i;
	local KFDebugLines	KFDL;
	local vector		SocketLocation, DirToEnemy;
	local rotator		SocketRotation;

	KFDL = class'KFDebugLines'.static.GetDebugLines();

	if (KFDL == none)
	{
		msg("You need to turn KFDebugLines on (bEnableAdvDebugLines in KFGame.ini) to do this.");
		return;
	}

	MyKFPawn.Mesh.GetSocketWorldLocationAndRotation(SocketName, SocketLocation, SocketRotation);

	KFDL.AddDebugLine(SocketLocation, SocketLocation + normal(Enemy.Location - SocketLocation) * 3024.f, 0, 255, 0, TRUE);
	for (i = 0; i < 7; i++)
	{
		DirToEnemy = normal(Enemy.Location - SocketLocation) + VRand() * AimError;
		KFDL.AddDebugLine(SocketLocation, SocketLocation + DirToEnemy * 3024.f, 255, 0, 0, TRUE);
	}
	msg("GAME PAUSED, UNPAUSE TO CONTINUE");
	DebugFreezeGame();
}
