1
0
KF2-Dev-Scripts/KFGame/Classes/Goal_Random.uc

64 lines
1.7 KiB
Ucode
Raw Permalink Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// Goal_Random
//=============================================================================
// Path goal evaluator to find a random navigationpoint in a range
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class Goal_Random extends PathGoalEvaluator
native(Waypoint);
cpptext
{
// Interface
virtual UBOOL EvaluateGoal( ANavigationPoint*& PossibleGoal, APawn* Pawn );
virtual void NotifyExceededMaxPathVisits( ANavigationPoint* BestGuess ){/*don't care about best guess.. just ignore this*/}
virtual UBOOL DetermineFinalGoal( ANavigationPoint*& out_GoalNav );
}
/** minimum path distance before we start rating nodes; useful when you want to make sure the random decision covers a reasonable distance
* and isn't just moving back and forth in a small area
*/
var int MinDist;
var float BestRating;
var NavigationPoint Best;
static function bool FindRandom(Pawn P, optional int InMinDist = -1, optional int InMaxPathVisits = -1)
{
local Goal_Random Eval;
if (P != None)
{
Eval = Goal_Random(P.CreatePathGoalEvaluator(default.class));
if (InMaxPathVisits > 0)
{
Eval.MaxPathVisits = InMaxPathVisits;
}
Eval.MinDist = InMinDist;
P.AddGoalEvaluator(Eval);
return true;
}
else
{
return false;
}
}
function Recycle()
{
Super.Recycle();
MaxPathVisits = default.maxPathVisits;
BestRating = default.BestRating;
MinDist = default.MinDist;
}
defaultproperties
{
BestRating=-1.0
MinDist=-1
CacheIdx=17
}