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

57 lines
1.7 KiB
Ucode

//=============================================================================
// Goal_AwayFromPosition
//=============================================================================
// Rates goals based on how far away they are from target
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
// Based on GOW Goal_AwayFromPosition
// Copyright 1998-2011 Epic Games, Inc. All Rights Reserved.
//=============================================================================
class Goal_AwayFromPosition extends PathGoalEvaluator
native(Waypoint);
cpptext
{
virtual UBOOL EvaluateGoal(ANavigationPoint*& PossibleGoal, APawn* Pawn);
virtual UBOOL DetermineFinalGoal( ANavigationPoint*& out_GoalNav );
}
/** Location to flee from */
var vector AvoidPos;
/** Cached direction from AvoidPos to Pawn.Location */
var vector AvoidDir;
/** Exit with the best result so far if the travel distance to the nodes being evaluated exceeds this */
var int MaxDist;
/** Best node away from AvoidDir we've found so far */
var NavigationPoint BestNode;
var int BestRating;
static function bool FleeFrom(Pawn P, vector InAvoidPos, int InMaxDist)
{
local Goal_AwayFromPosition Eval;
Eval = Goal_AwayFromPosition(P.CreatePathGoalEvaluator(default.class));
Eval.AvoidPos = InAvoidPos;
Eval.AvoidDir = Normal2D(InAvoidPos - P.Location);
Eval.MaxDist = InMaxDist;
P.AddGoalEvaluator(Eval);
return true;
}
event Recycle()
{
Super.Recycle();
BestNode = None;
BestRating = 0;
}
defaultproperties
{
CacheIdx=7
}