9 #ifndef Navigation_PathFinderQueryUtils_H
10 #define Navigation_PathFinderQueryUtils_H
31 class LogicWithoutCostMultipler;
32 class LogicWithCostMultiplerPerNavTag;
33 class LogicWithCostMultiplerPerTriangle;
34 class QueryDynamicOutput;
45 Init(database, workingMemory, traverseLogicUserData);
48 void Init(
Database* database, WorkingMemory* workingMemory,
void* traverseLogicUserData)
50 QueryUtils::Init(database, workingMemory, traverseLogicUserData);
53 enum NearestCornerType
55 NearestCornerType_Undefined,
56 NearestCornerType_PrevNode,
57 NearestCornerType_InnerCorner,
58 NearestCornerType_NextNode
62 template<
class TraverseLogic>
63 KyResult TryToHookOnNavMesh(
const Vec3f& inputOutsidePos,
const PositionSpatializationRange& positionSpatializationRange,
68 template <
class TraverseLogic>
69 KyResult RefineOneNode(
const PositionSpatializationRange& positionSpatializationRange,
const PathRefinerConfig& pathRefinerConfig,
KyUInt32& cangoTestDone);
71 template <
class TraverseLogic>
72 Ptr<Path> ComputePathFromPathClamperContext(
const Vec3f& realStartPos,
const Vec3f& realEndPos,
const PositionSpatializationRange& positionSpatializationRange);
74 void BindAndSetRayCastQueryParameters(
BaseRayCastQuery& rayCast,
const PositionSpatializationRange& positionSpatializationRange,
void* traverseLogicUserData);
78 void BindAndSetRayCanGoQueryParameters(
const LogicWithoutCostMultipler&,
BaseRayCanGoQuery& canGo,
const PositionSpatializationRange& spatializationRange,
void* traverseLogicUserData);
79 void BindAndSetRayCanGoQueryParameters(
const LogicWithCostMultiplerPerNavTag&,
BaseRayCanGoQuery& canGo,
const PositionSpatializationRange& spatializationRange,
void* traverseLogicUserData);
80 void BindAndSetRayCanGoQueryParameters(
const LogicWithCostMultiplerPerTriangle&,
BaseRayCanGoQuery& canGo,
const PositionSpatializationRange& spatializationRange,
void* traverseLogicUserData);
81 void BindAndSetRayCanGoQueryParameters_Impl(
BaseRayCanGoQuery& canGo,
const PositionSpatializationRange& spatializationRange,
void* traverseLogicUserData);
84 static KyFloat32 GetMaxCostMultiplierFromCanGo(
const LogicWithCostMultiplerPerNavTag&,
QueryDynamicOutput* queryDynamicOutput) {
return GetMaxCostMultiplierFromCanGo_Impl(queryDynamicOutput); }
85 static KyFloat32 GetMaxCostMultiplierFromCanGo(
const LogicWithCostMultiplerPerTriangle&,
QueryDynamicOutput* queryDynamicOutput) {
return GetMaxCostMultiplierFromCanGo_Impl(queryDynamicOutput); }
88 void ComputeRefinerNodeCost(RefinerNode* currentNode);
89 KyResult UpdateNodeInBinaryHeap(RefinerNodeIndex nodeIdx, RefinerNode* currentNode);
94 void DisplayListRefining(
const char* queryName);
95 void DisplayListPropagation(
const char* queryName);
96 void DisplayListShortestpath(
const char* queryName, AStarNodeIndex destNodeIndex = AStarNodeIndex_DestNode);
98 void DisplayConeCastInput(
const NavTriangleRawPtr& propagationStartTriangleRawPtr,
const Vec3f& currentNodePos,
const Vec3f& coneCornerPos,
100 void DisplayConeCastOutput(
const Vec3f& currentNodePos,
const Vec3f& nearestCorner, NearestCornerType nearestCornerType,
101 KyFloat32 minDist, WorkingMemArray<NavTriangleRawPtr>* visitedNodes);
113 #endif //Navigation_PathFinderQueryUtils_H
This class gather the data encountered along some query process.
Definition: querydynamicoutput.h:61
KyInt32 KyResult
Defines a type that can be returned by methods or functions in the Gameware Navigation SDK to indicat...
Definition: types.h:254
This class is an helper used internaly by the PathFinder Queries to factorize Code.
Definition: pathfinderqueryutils.h:37
Represents a single RGBA color.
Definition: visualcolor.h:19
This class is a runtime container for all NavData that represents the world from the point of view of...
Definition: database.h:64
This class defines a two-dimensional vector whose coordinates are stored using floating-point numbers...
Definition: vec2f.h:24
Base class for RayCastQuery.
Definition: baseraycastquery.h:47
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtrianglerawptr.h:30
Utilities for dealing with NavData coordinates, which are expressed in a world space based on integer...
Definition: worldintegerpos.h:21
Base class for RayCanGoQuery.
Definition: baseraycangoquery.h:44
This class is an helper used internally by the Queries to factorize Code that is used in many Queries...
Definition: queryutils.h:30
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtriangleptr.h:22
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43
This class defines a three-dimensional vector whose coordinates are stored using floating-point numbe...
Definition: vec3f.h:23