7 #ifndef Navigation_LocalCostAwareTraverseLogic_H
8 #define Navigation_LocalCostAwareTraverseLogic_H
20 class LocalCostAwareTraverseLogicData
23 LocalCostAwareTraverseLogicData() { Clear(); }
24 void Clear() { m_userTraverseLogicData =
KY_NULL; m_localMaxCostMultiplierOnPath = 1.0f; }
26 void* m_userTraverseLogicData;
34 template <
class UserTraverseLogic>
35 class LocalCostAwareTraverseLogic
53 template <class UserTraverseLogic>
58 void* userTraverseLogicData = ((LocalCostAwareTraverseLogicData*)traverseLogicUserData)->m_userTraverseLogicData;
59 return UserTraverseLogic::CanTraverseNavTag(userTraverseLogicData, navTag);
62 template <
class UserTraverseLogic>
65 LocalCostAwareTraverseLogicData* localCostAwareTraverseLogicData = (LocalCostAwareTraverseLogicData*)traverseLogicUserData;
66 KyFloat32 localCostOnPath = localCostAwareTraverseLogicData->m_localMaxCostMultiplierOnPath;
67 void* userTraverseLogicData = localCostAwareTraverseLogicData->m_userTraverseLogicData;
71 bool canTraverse = UserTraverseLogic::CanTraverseNavTag(userTraverseLogicData, navTag, &costMultiplier);
72 if (output_costMultiplier)
73 *output_costMultiplier = costMultiplier;
75 if (canTraverse ==
false)
78 if (costMultiplier > localCostOnPath)
84 template <
class UserTraverseLogic>
87 LocalCostAwareTraverseLogicData* customTraverseLogicData = (LocalCostAwareTraverseLogicData*)traverseLogicUserData;
88 return UserTraverseLogic::CanTraverseNavTriangle(customTraverseLogicData->m_userTraverseLogicData, triangle, costmultiplier);
#define KY_TRAVERSE_LOGIC(ClassName, costMode, canEnterMode)
Define to forbid constructor, copy constructor and copy assignment.
Definition: types.h:489
#define KY_NULL
Null value.
Definition: types.h:247
static bool CanTraverseNavTag(void *traverseLogicUserData, const NavTag &navTag)
Only one of this function is going to be called and exist depending on UserTraverseLogic::CostMultipl...
Definition: localcostawaretraverselogic.h:57
Definition: gamekitcrowddispersion.h:20
static bool CanTraverseNavTriangle(void *traverseLogicUserData, const NavTriangleRawPtr &triangle, KyFloat32 *costmultiplier)
Function called when UserTraverseLogic::CostMultiplierUsage is LogicWithCostMultiplerPerTriangle.
Definition: localcostawaretraverselogic.h:88
Each instance of this class uniquely identifies a single NavTriangle in a NavFloor.
Definition: navtrianglerawptr.h:30
LocalCostAwareTraverseLogic is a wrapper around the traverse logic set by the user.
Definition: localcostawaretraverselogic.h:37
float KyFloat32
Type used internally to represent a 32-bit floating-point number.
Definition: types.h:43