9 #ifndef Navigation_TraverseLogic_H
10 #define Navigation_TraverseLogic_H
21 class NavTriangleRawPtr;
22 class NavGraphEdgeRawPtr;
24 class LogicDoNotUseCanEnterNavTag {
public: LogicDoNotUseCanEnterNavTag() {} };
25 class LogicDoUseCanEnterNavTag {
public: LogicDoUseCanEnterNavTag() {} };
27 class LogicWithoutCostMultipler {
public: LogicWithoutCostMultipler() {} };
28 class LogicWithCostMultiplerPerNavTag {
public: LogicWithCostMultiplerPerNavTag() {} };
29 class LogicWithCostMultiplerPerTriangle {
public: LogicWithCostMultiplerPerTriangle() {} };
57 template <
class TCanEnterNavTagMode = LogicDoNotUseCanEnterNavTag>
58 class SimpleTraverseLogic
60 KY_TRAVERSE_LOGIC(SimpleTraverseLogic, LogicWithoutCostMultipler, TCanEnterNavTagMode)
75 static KY_INLINE
bool CanEnterNavTag(
void* ,
const NavTag& ,
const NavTag& ,
76 const Vec3f& ) {
return true; }
86 static bool CanTraverse(
void*,
const Kaim::NavTag&)
87 { KY_LOG_ERROR((
"Obsolete Function should never be called")); KY_DEBUG_BREAK;
return false; }
89 static KyFloat32 GetCostMultiplier(
void*,
const Kaim::NavTag&)
90 { KY_LOG_ERROR((
"Obsolete Function should never be called")); KY_DEBUG_BREAK;
return 0.f; }
93 { KY_LOG_ERROR((
"Obsolete Function should never be called")); KY_DEBUG_BREAK;
return false; }
97 class DefaultTraverseLogic :
public SimpleTraverseLogic<LogicDoNotUseCanEnterNavTag>
106 template <
class TCanEnterNavTagMode>
107 class TraverseLogicWithCostMultiplerPerNavTag
109 KY_TRAVERSE_LOGIC(TraverseLogicWithCostMultiplerPerNavTag, LogicWithCostMultiplerPerNavTag, TCanEnterNavTagMode)
133 static KY_INLINE
bool CanEnterNavTag(
void* ,
const NavTag& ,
const NavTag& ,
134 const Vec3f& ) {
return true; }
152 template <
class TCanEnterNavTagMode>
179 static KY_INLINE
bool CanEnterNavTag(
void* ,
const NavTag& ,
const NavTag& ,
180 const Vec3f& ) {
return true; }
static bool CanTraverseNavTag(void *, const NavTag &)
These method are called each time the path finding query, path following system or any other query co...
Definition: traverselogic.h:72
static KyFloat32 GetHeuristicFromDistanceToDest(void *, KyFloat32 distance3DToDestination)
This method is called for each candidate node in the Path calculation.
Definition: traverselogic.h:78
#define KY_TRAVERSE_LOGIC(ClassName, costMode, canEnterMode)
Define to forbid constructor, copy constructor and copy assignment.
Definition: types.h:489
static bool CanTraverseNavTag(void *, const NavTag &, KyFloat32 *)
These method are called each time the path finding query, path following system or any other query co...
Definition: traverselogic.h:143
static KyFloat32 GetHeuristicFromDistanceToDest(void *, KyFloat32 distance3DToDestination)
This method is called for each candidate node in the A* calculation.
Definition: traverselogic.h:149
static bool CanTraverseNavTriangle(void *, const NavTriangleRawPtr &, KyFloat32 *)
These method are called each time the path finding query, path following system or any other query co...
Definition: traverselogic.h:201
static bool CanEnterNavTag(void *, const NavTag &, const NavTag &, const Vec3f &)
This method is only required when you set up your customizer to validate NavTag transitions.
Definition: traverselogic.h:153
static KyFloat32 GetHeuristicFromDistanceToDest(void *, KyFloat32 distance3DToDestination)
This method is called for each candidate node in the A* calculation.
Definition: traverselogic.h:208
Each instance of this class uniquely identifies a single NavGraphEdge in a NavGraph.
Definition: navgraphedgerawptr.h:33
static bool CanEnterNavTag(void *, const NavTag &, const NavTag &, const Vec3f &)
This method is only required when you set up your customizer to validate NavTag transitions.
Definition: traverselogic.h:82
Definition: gamekitcrowddispersion.h:20
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtrianglerawptr.h:30
TraverseLogicWithCostMultiplerPerNavTag defines all the functions that are potentially called in the ...
Definition: traverselogic.h:181
static bool CanEnterNavTag(void *, const NavTag &, const NavTag &, const Vec3f &)
This method is only required when you set up your customizer to validate NavTag transitions.
Definition: traverselogic.h:212
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