|
@@ -196,8 +196,24 @@ public:
|
|
|
int movementLeft,
|
|
|
float cost) const;
|
|
|
|
|
|
- const AIPathNode * getAINode(const CGPathNode * node) const;
|
|
|
- void updateAINode(CGPathNode * node, std::function<void (AIPathNode *)> updater);
|
|
|
+ inline const AIPathNode * getAINode(const CGPathNode * node) const
|
|
|
+ {
|
|
|
+ return static_cast<const AIPathNode *>(node);
|
|
|
+ }
|
|
|
+
|
|
|
+ inline void updateAINode(CGPathNode * node, std::function<void (AIPathNode *)> updater)
|
|
|
+ {
|
|
|
+ auto aiNode = static_cast<AIPathNode *>(node);
|
|
|
+
|
|
|
+ updater(aiNode);
|
|
|
+ }
|
|
|
+
|
|
|
+ inline const CGHeroInstance * getHero(const CGPathNode * node) const
|
|
|
+ {
|
|
|
+ auto aiNode = getAINode(node);
|
|
|
+
|
|
|
+ return aiNode->actor->hero;
|
|
|
+ }
|
|
|
|
|
|
bool hasBetterChain(const PathNodeInfo & source, CDestinationNodeInfo & destination) const;
|
|
|
|
|
@@ -223,18 +239,17 @@ public:
|
|
|
void setTownsAndDwellings(
|
|
|
const std::vector<const CGTownInstance *> & towns,
|
|
|
const std::set<const CGObjectInstance *> & visitableObjs);
|
|
|
- const CGHeroInstance * getHero(const CGPathNode * node) const;
|
|
|
const std::set<const CGHeroInstance *> getAllHeroes() const;
|
|
|
void clear();
|
|
|
bool calculateHeroChain();
|
|
|
bool calculateHeroChainFinal();
|
|
|
|
|
|
- uint64_t evaluateDanger(const int3 & tile, const CGHeroInstance * hero, bool checkGuards) const
|
|
|
+ inline uint64_t evaluateDanger(const int3 & tile, const CGHeroInstance * hero, bool checkGuards) const
|
|
|
{
|
|
|
return dangerEvaluator->evaluateDanger(tile, hero, checkGuards);
|
|
|
}
|
|
|
|
|
|
- uint64_t evaluateArmyLoss(const CGHeroInstance * hero, uint64_t armyValue, uint64_t danger) const
|
|
|
+ inline uint64_t evaluateArmyLoss(const CGHeroInstance * hero, uint64_t armyValue, uint64_t danger) const
|
|
|
{
|
|
|
double ratio = (double)danger / (armyValue * hero->getFightingStrength());
|
|
|
|
|
@@ -243,6 +258,7 @@ public:
|
|
|
|
|
|
STRONG_INLINE
|
|
|
void resetTile(const int3 & tile, EPathfindingLayer layer, CGPathNode::EAccessibility accessibility);
|
|
|
+
|
|
|
STRONG_INLINE int getBucket(const ChainActor * actor) const
|
|
|
{
|
|
|
return ((uintptr_t)actor * 395) % AIPathfinding::BUCKET_COUNT;
|