1
0
KF2-Dev-Scripts/Engine/Classes/Path_AvoidInEscapableNodes.uc
2020-12-13 18:01:13 +03:00

55 lines
1.3 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
* - this constraint will throw out nodes which the pathing bot could get to, but not get away from. Normally this
* is not necessary as you're usually pathing somewhere so a node which you can't get out of is thrown out by A*, but if
* you're doing some sort of generic search (ie. for a node in range of something) you could end up with a node the bot can't
* escape from, thus causing him to be forever stuck.. this constraint will prevent that from happening
*/
class Path_AvoidInEscapableNodes extends PathConstraint
native(AI);
var int Radius;
var int Height;
var int MaxFallSpeed;
var int moveFlags;
cpptext
{
// Interface
virtual UBOOL EvaluatePath( UReachSpec* Spec, APawn* Pawn, INT& out_PathCost, INT& out_HeuristicCost );
}
private native function CachePawnReacFlags(Pawn P);
static function bool DontGetStuck( Pawn P )
{
local Path_AvoidInEscapableNodes Con;
if( P != None)
{
Con = Path_AvoidInEscapableNodes(P.CreatePathConstraint(default.class));
if( Con != None )
{
Con.CachePawnReacFlags(P);
P.AddPathConstraint( Con );
return TRUE;
}
}
return FALSE;
}
function Recycle()
{
Super.Recycle();
Radius=0;
Height=0;
MaxFallSpeed=0;
moveFlags=0;
}
defaultproperties
{
Cacheidx=11
}