From d8c4425409128e458134ba6d7424113dea8ad2d1 Mon Sep 17 00:00:00 2001 From: bash Date: Sun, 31 May 2026 16:41:11 +0200 Subject: [PATCH] refactor(Core/Travel): Drop dead zone-index machinery + isEqual + cropUselessLink(single) (-124 lines) --- src/Mgr/Travel/TravelNode.cpp | 108 ---------------------------------- src/Mgr/Travel/TravelNode.h | 16 +---- 2 files changed, 1 insertion(+), 123 deletions(-) diff --git a/src/Mgr/Travel/TravelNode.cpp b/src/Mgr/Travel/TravelNode.cpp index 8c5cf90ba..378c6011a 100644 --- a/src/Mgr/Travel/TravelNode.cpp +++ b/src/Mgr/Travel/TravelNode.cpp @@ -425,11 +425,6 @@ bool TravelNode::isUselessLink(TravelNode* farNode) return false; } -void TravelNode::cropUselessLink(TravelNode* farNode) -{ - if (isUselessLink(farNode)) - removeLinkTo(farNode); -} bool TravelNode::cropUselessLinks() { @@ -477,28 +472,6 @@ bool TravelNode::cropUselessLinks() } -bool TravelNode::isEqual(TravelNode* compareNode) -{ - if (!hasLinkTo(compareNode)) - return false; - - if (!compareNode->hasLinkTo(this)) - return false; - - for (auto& node : TravelNodeMap::instance().getNodes()) - { - if (node == this || node == compareNode) - continue; - - if (node->hasLinkTo(this) != node->hasLinkTo(compareNode)) - return false; - - if (hasLinkTo(node) != compareNode->hasLinkTo(node)) - return false; - } - - return true; -} void TravelNode::print([[maybe_unused]] bool printFailed) { @@ -2120,7 +2093,6 @@ void TravelNodeMap::generateAll() hasToSave = true; saveNodeStore(); - BuildZoneIndex(); PrecomputeReachability(); } @@ -2145,7 +2117,6 @@ void TravelNodeMap::Init() saveNodeStore(); } - BuildZoneIndex(); PrecomputeReachability(); } @@ -2745,85 +2716,6 @@ std::vector TravelNodeMap::BuildPath(uint32 fromNode, uint32 toNode, return path; } -void TravelNodeMap::BuildZoneIndex() -{ - m_zoneIndex.clear(); - m_mapIndex.clear(); - - for (auto* node : nodes) - { - if (!node) - continue; - - WorldPosition* pos = node->getPosition(); - uint32 mapId = pos->GetMapId(); - - m_mapIndex[mapId].push_back(node); - - uint32 zoneId = sMapMgr->GetZoneId(PHASEMASK_NORMAL, *pos); - if (zoneId) - m_zoneIndex[zoneId].push_back(node); - } -} - -TravelNode* TravelNodeMap::GetNearestNodeInZone(WorldPosition pos, uint32 zoneId) -{ - auto it = m_zoneIndex.find(zoneId); - if (it == m_zoneIndex.end() || it->second.empty()) - return GetNearestNodeOnMap(pos); // Fallback to map-wide - - TravelNode* bestNode = nullptr; - float bestDist = FLT_MAX; - - for (auto* node : it->second) - { - if (!node || node->GetMapId() != pos.GetMapId()) - continue; - float dist = node->fDist(pos); - if (dist < bestDist) - { - bestDist = dist; - bestNode = node; - } - } - - if (!bestNode) - return GetNearestNodeOnMap(pos); - - return bestNode; -} - -std::vector const& TravelNodeMap::GetNodesInZone(uint32 zoneId) const -{ - static std::vector const empty; - auto it = m_zoneIndex.find(zoneId); - if (it == m_zoneIndex.end()) - return empty; - return it->second; -} - -TravelNode* TravelNodeMap::GetNearestNodeOnMap(WorldPosition pos) -{ - auto it = m_mapIndex.find(pos.GetMapId()); - if (it == m_mapIndex.end() || it->second.empty()) - return nullptr; - - TravelNode* bestNode = nullptr; - float bestDist = FLT_MAX; - - for (auto* node : it->second) - { - if (!node) - continue; - float d = node->fDist(pos); - if (d < bestDist) - { - bestDist = d; - bestNode = node; - } - } - - return bestNode; } void TravelNodeMap::PrecomputeReachability() diff --git a/src/Mgr/Travel/TravelNode.h b/src/Mgr/Travel/TravelNode.h index 901aedd13..132cf3828 100644 --- a/src/Mgr/Travel/TravelNode.h +++ b/src/Mgr/Travel/TravelNode.h @@ -93,7 +93,7 @@ enum class TravelNodePathType : uint8 areaTrigger = 2, transport = 3, flightPath = 4, - // value 5 reserved (was teleportSpell — removed) + // teleportSpell = 5 // maybe someday staticPortal = 6 }; @@ -353,11 +353,8 @@ public: } void removeLinkTo(TravelNode* node, bool removePaths = false); - bool isEqual(TravelNode* compareNode); - // Removes links to other nodes that can also be reached by passing another node. bool isUselessLink(TravelNode* farNode); - void cropUselessLink(TravelNode* farNode); bool cropUselessLinks(); // Returns all nodes that can be reached from this node. @@ -704,16 +701,8 @@ public: void InitTaxiGraph(); std::vector FindTaxiPath(uint32 fromNode, uint32 toNode); - void BuildZoneIndex(); void PrecomputeReachability(); - TravelNode* GetNearestNodeInZone(WorldPosition pos, uint32 zoneId); - TravelNode* GetNearestNodeOnMap(WorldPosition pos); - - // All nodes registered to a zone (post-BuildZoneIndex). Returns an - // empty static vector for unknown zones. - std::vector const& GetNodesInZone(uint32 zoneId) const; - // Resolve a full TravelPath from botPos to destination. Returns an // empty TravelPath if no graph route + mmap stitch is reachable; // the caller is then expected to fall back to a single-point path. @@ -754,9 +743,6 @@ private: std::vector nodes; - std::unordered_map> m_zoneIndex; - std::unordered_map> m_mapIndex; - std::vector> mapOffsets; bool hasToSave = false;