feat: show discovered taxi nodes as markers on the world map

Add gold diamond markers for every flight master the player has already
discovered (knownTaxiMask_), read from TaxiNodes.dbc and filtered to the
current continent/map being displayed:
- WorldMapTaxiNode struct carries canonical WoW coords + known flag
- WorldMap::setTaxiNodes() accepts the per-frame list from game_screen
- renderImGuiOverlay() projects each known node to UV, draws a gold
  diamond (AddQuadFilled) with a dark outline, and shows the node name
  as a tooltip on hover
- GameHandler::isKnownTaxiNode(id) checks knownTaxiMask_[] efficiently
- Markers update live — newly discovered nodes appear without reopening
  the map
This commit is contained in:
Kelsi 2026-03-17 19:01:03 -07:00
parent 488ec945b6
commit d60d296b77
4 changed files with 75 additions and 0 deletions

View file

@ -7033,6 +7033,25 @@ void GameScreen::renderWorldMap(game::GameHandler& gameHandler) {
wm->setPartyDots(std::move(dots));
}
// Taxi node markers on world map
{
std::vector<rendering::WorldMapTaxiNode> taxiNodes;
const auto& nodes = gameHandler.getTaxiNodes();
taxiNodes.reserve(nodes.size());
for (const auto& [id, node] : nodes) {
rendering::WorldMapTaxiNode wtn;
wtn.id = node.id;
wtn.mapId = node.mapId;
wtn.wowX = node.x;
wtn.wowY = node.y;
wtn.wowZ = node.z;
wtn.name = node.name;
wtn.known = gameHandler.isKnownTaxiNode(id);
taxiNodes.push_back(std::move(wtn));
}
wm->setTaxiNodes(std::move(taxiNodes));
}
glm::vec3 playerPos = renderer->getCharacterPosition();
float playerYaw = renderer->getCharacterYaw();
auto* window = app.getWindow();