51 lines
1.4 KiB
Ucode
51 lines
1.4 KiB
Ucode
/**
|
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
|
* this goal will throw out polygons which can't fully fit the entity searching
|
|
* this is useful for open-ended path searches (e.g. find any poly outside of a radius) because
|
|
* an edge may support the entity allowing the traversal to enter a polygon, but the entity might not necessarily fully
|
|
* fit inside the polygon, even though he could move through it
|
|
*/
|
|
class NavMeshGoal_PolyEncompassesAI extends NavMeshPathGoalEvaluator
|
|
native(AI);
|
|
|
|
|
|
/** This is what we are going to check and make certain we have enough space to spawn this size of extent **/
|
|
var transient vector OverrideExtentToCheck;
|
|
|
|
cpptext
|
|
{
|
|
// Interface
|
|
virtual UBOOL EvaluateGoal( PathCardinalType PossibleGoal, const FNavMeshPathParams& PathParams, PathCardinalType& out_GenGoal );
|
|
}
|
|
|
|
|
|
static function bool MakeSureAIFits( NavigationHandle NavHandle, optional const vector InOverrideExtentToCheck )
|
|
{
|
|
local NavMeshGoal_PolyEncompassesAI Eval;
|
|
|
|
if( NavHandle != None )
|
|
{
|
|
Eval = NavMeshGoal_PolyEncompassesAI(NavHandle.CreatePathGoalEvaluator(default.class));
|
|
|
|
if( Eval != None )
|
|
{
|
|
Eval.OverrideExtentToCheck = InOverrideExtentToCheck;
|
|
NavHandle.AddGoalEvaluator( Eval );
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
function Recycle()
|
|
{
|
|
Super.Recycle();
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
// staticobstaclepoint checks performed by EvaluateGoal, use this sparingly
|
|
MaxPathVisits=64
|
|
}
|