/**
 * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
 */
class NavMeshGoal_OutOfViewFrom extends NavMeshPathGoalEvaluator
	native;


// the polygon that contains our goal point
var private native pointer GoalPoly{FNavMeshPolyBase};

var vector OutOfViewLocation;

/** show debug lines **/
// TODO: prob should promote this
var bool bShowDebug;


cpptext
{
	// Interface
	virtual UBOOL InitializeSearch( UNavigationHandle* Handle, const FNavMeshPathParams& PathParams);
	virtual UBOOL EvaluateGoal( PathCardinalType PossibleGoal, const FNavMeshPathParams& PathParams, PathCardinalType& out_GenGoal );
	virtual void  NotifyExceededMaxPathVisits( PathCardinalType BestGuess, PathCardinalType& out_GenGoal );
}



native function RecycleNative();


static function bool MustBeHiddenFromThisPoint( NavigationHandle NavHandle, Vector InOutOfViewLocation )
{
	local NavMeshGoal_OutOfViewFrom Eval;

	if( NavHandle != None )
	{
		Eval = NavMeshGoal_OutOfViewFrom(NavHandle.CreatePathGoalEvaluator(default.class));

		if( Eval != None )
		{
			Eval.OutOfViewLocation = InOutOfViewLocation;
			NavHandle.AddGoalEvaluator( Eval );
			return TRUE;
		}
	}

	return FALSE;
}


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

defaultproperties
{
	bShowDebug=FALSE
}