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

63 lines
2.3 KiB
Ucode

/**
* Interface for actors that use NavigationHandle
* - implementations of this interface describe what constraints and parameters to use when searching for a path across the nav mesh
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
interface Interface_NavigationHandle
native;
cpptext
{
/** >>>>> here lie functions which take input, and thus can not be cached */
virtual UBOOL CanCoverSlip(class ACoverLink* Link, INT SlotIdx) { return FALSE; }
/**
* returns the offset from the edge move point this entity should move toward (e.g. how high off the ground we should move to)
* @param Edge - the edge we're moving to
* @return - the offset to use
*/
virtual FVector GetEdgeZAdjust(struct FNavMeshEdgeBase* Edge)=0;
/**
* allows entities to do custom validation before OK'ing mantle edges
* @param Edge - the edge we're verifying
* @return TRUE if the passed edge is OK to traverse
*/
virtual UBOOL CheckMantleValidity(struct FNavMeshMantleEdge* Edge){ return TRUE; }
/*** <<<<<< */
/**
* this function is responsible for setting all the relevant parmeters used for pathfinding
* @param out_ParamCache - the output struct to populate params in
* @NOTE: ALL Params FNavMeshPathParams should be populated
*
*/
virtual void SetupPathfindingParams( struct FNavMeshPathParams& out_ParamCache )=0;
/**
* Called from FindPath() at the beginning of a path search to give this entity a chance to initialize transient data
*/
virtual void InitForPathfinding()=0;
/**
* when this entity is using an edge (e.g. it has been marked active and is in this handle's pathcache) this function allows
* extra cost to be added for other entities trying to use that edge. (e.g. to keep guys from using the same path)
* @param Edge - the edge we're about to mark as active
*/
virtual INT ExtraEdgeCostToAddWhenActive(FNavMeshEdgeBase* Edge) { return 0; }
/**
* DebugLog function which is called to log information specific to this AI (call NAVHANDLE_DEBUG_LOG macro, don't call this directly)
* @param LogText - text to log for this AI
*/
virtual void DebugLogInternal(const TCHAR* LogText) {}
}
/**
* this event is called when an edge is deleted that this handle is actively using
*/
event NotifyPathChanged();