//=============================================================================
// Path_AvoidChokePoints.uc
//=============================================================================
// Path constraint for NPCs who prefer navigation points in darker areas
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class Path_PreferWalls extends PathConstraint
	native(Waypoint);

var bool 	bOnlyAcceptWallNodes;
var int 	FloorNodeCost;
var bool 	bAvoidEnemy;

cpptext
{
	virtual UBOOL EvaluatePath( UReachSpec* Spec, APawn* Pawn, INT& out_PathCost, INT& out_HeuristicCost );
}

static function bool PreferWalls( Pawn P, optional bool InOnlyAcceptWallNodes=false, optional int InFloorNodeCost=10000, optional bool InAvoidEnemy=false )
{
	local Path_PreferWalls Con;

	if( P != None )
	{
		Con = Path_PreferWalls( P.CreatePathConstraint(default.class) );
		if( Con != None )
		{
			Con.FloorNodeCost		 = InFloorNodeCost;
			Con.bOnlyAcceptWallNodes = InOnlyAcceptWallNodes;
			Con.bAvoidEnemy			 = InAvoidEnemy;
			P.AddPathConstraint( Con );
			return true;
		}
	}

	return false;
}

function Recycle()
{
	Super.Recycle();
}

defaultproperties
{
	CacheIdx=16
}
