19 class PathFinderQueryUtils;
21 enum OnGraphVertexVisitedResult
23 OnGraphVertexVisited_IgnoreVertex_GoOn,
24 OnGraphVertexVisited_IgnoreVertex_StopWithBestSoFar,
25 OnGraphVertexVisited_StopOnThisVertex,
26 OnGraphVertexVisited_VertexIsTheBestSoFar_GoOn,
27 OnGraphVertexVisited_NeedToCheckRefinePathToThisVertex
30 enum OnPathToGraphVertexComputedResult
32 OnPathToGraphVertexComputed_IgnoreVertex_GoOn,
33 OnPathToGraphVertexComputed_IgnoreVertex_StopWithBestSoFar,
34 OnPathToGraphVertexComputed_StopOnThisVertex,
35 OnPathToGraphVertexComputed_VertexIsTheBestSoFar_GoOn,
56 template<
class VertexFinderLogic>
65 m_traversal.m_traversalParams = &m_traversalParams;
74 virtual void Advance(WorkingMemory* workingMemory);
79 bool TraversalHasVisitedNavDataChanged();
82 void SetFinish(WorkingMemory* workingMemory);
86 KyResult CheckNavDataChangeDuringTraversal(WorkingMemory* workingMemory);
87 KyResult CheckNavDataChangeAfterTraversal(WorkingMemory* workingMemory);
92 class TraversalCustomizer
95 typedef VertexFinderLogic TLogic;
101 bool CanEnterNavTag(
const NavTag& exitNavTag,
const NavTag& enterNavTag,
const Vec3f& pos) {
return TLogic::CanEnterNavTag(
m_traverseLogicUserData, exitNavTag, enterNavTag, pos); }
102 KyFloat32 GetHeuristicFromNodePosition(
const Vec3f& ) {
return 0.0f; }
106 bool ShouldVisitNode(AStarTraversalContext*, AStarNodeIndex) {
return true; }
108 bool IsNodeOutsidePropagationBounds(AStarTraversalContext* astarContext, AStarNodeIndex nodeIndex)
110 if (m_maxRadius == 0.0f)
112 const AStarNode& astarNode = astarContext->m_aStarNodes[nodeIndex];
113 return SquareDistance(astarNode.m_nodePosition, m_startPos) > m_maxRadius * m_maxRadius;
118 bool ShouldOpenAbstractGraphNode(
const AbstractGraphNodeRawPtr& ) {
return false; }
119 bool ShouldOpenNavTriangleUnderAbstractGraphNode(
const AbstractGraphNodeRawPtr& ) {
return false; }
121 Vec3f ComputeNodePositionOnHalfEdge(AStarTraversalContext*,
const Vec3f& startPosOfEdge,
const Vec3f& endPosOfEdge, AStarNodeIndex)
123 return (endPosOfEdge + startPosOfEdge) * 0.5f;
134 AStarTraversal<TraversalCustomizer> m_traversal;
This query propagates outward through the NavMesh from the starting position.
Definition: bestgraphvertexpathfinderquery.h:57
Base class for BestGraphVertexPathFinderQuery.
Definition: basebestgraphvertexpathfinderquery.h:47
This class is an helper used internally by the PathFinder Queries to factorize Code.
Definition: pathfinderqueryutils.h:35
virtual void Advance(WorkingMemory *workingMemory)
Performs a single iteration of the PathFinder.
Definition: bestgraphvertexpathfinderquery.inl:24
void * GetTraverseLogicUserData() const
Gets m_traverseLogicUserData.
Definition: iquery.h:170
KyFloat32 SquareDistance(const Vec2f &A, const Vec2f &B)
Returns the square of the distance between A and B.
Definition: vec2f.h:130
Each instance of this class uniquely identifies a single NavGraphEdge in a NavGraph.
Definition: navgraphedgerawptr.h:26
virtual void ReleaseWorkingMemoryOnCancelDuringProcess(WorkingMemory *workingMemory=nullptr)
Called when a query is canceled in FlushCommands while its status is QueryInProcess to make sure that...
Definition: bestgraphvertexpathfinderquery.inl:13
Navigation return code class.
Definition: types.h:108
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Identifies a single NavTriangle in a NavFloor.
Definition: navtrianglerawptr.h:21
void * m_traverseLogicUserData
This userData is typically passed by the Bot.
Definition: iquery.h:236
Each instance of this class uniquely identifies a single NavHalfEdge in a NavFloor.
Definition: navhalfedgerawptr.h:23
Each instance of this class uniquely identifies a single NavGraphVertex in a NavGraph.
Definition: navgraphvertexrawptr.h:27
float KyFloat32
float
Definition: types.h:32
3d vector using 32bits floating points.
Definition: vec3f.h:16