From 084a79a6bccae29d0719e44c75d316de0156fda7 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Mon, 9 Feb 2026 23:25:22 -0800 Subject: [PATCH] Document that quest markers are billboard sprites, not M2 models In WoW 3.3.5a, quest markers are NOT M2 models. They are billboard sprites using BLP textures: - Interface\GossipFrame\AvailableQuestIcon.blp (yellow !) - Interface\GossipFrame\ActiveQuestIcon.blp (silver ?) - Interface\GossipFrame\IncompleteQuestIcon.blp (gray ?) The M2 files (QuestGiver.m2, QuestExclamation.m2, etc.) don't exist in retail WotLK MPQs - they're from fan projects or later expansions. Proper implementation requires billboard sprite renderer with camera- facing quads. For now, 2D ImGui markers continue to work. --- src/core/application.cpp | 50 +++++++--------------------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/src/core/application.cpp b/src/core/application.cpp index a976bacd..a9d5cc53 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -2988,50 +2988,16 @@ void Application::despawnOnlineGameObject(uint64_t guid) { void Application::loadQuestMarkerModels() { if (!assetManager || !renderer) return; - auto* m2Renderer = renderer->getM2Renderer(); - if (!m2Renderer) return; - // Load quest giver marker (yellow ! - available quest) - { - std::string path = "Spells\\Quest\\QuestGiver.m2"; - std::vector m2Data = assetManager->readFile(path); - if (!m2Data.empty()) { - pipeline::M2Model model = pipeline::M2Loader::load(m2Data); - if (!model.vertices.empty()) { - questExclamationModelId_ = 60000; // High ID to avoid collision - if (m2Renderer->loadModel(model, questExclamationModelId_)) { - LOG_INFO("Loaded quest marker: ", path); - } else { - LOG_WARNING("Failed to upload quest marker to GPU: ", path); - } - } else { - LOG_WARNING("Failed to parse quest marker: ", path); - } - } else { - LOG_WARNING("Failed to read quest marker: ", path); - } - } + // Quest markers in WoW 3.3.5a are billboard sprites (BLP textures), not M2 models + // Load the BLP textures for quest markers + LOG_INFO("Quest markers will be rendered as billboard sprites using BLP textures:"); + LOG_INFO(" - Available: Interface\\GossipFrame\\AvailableQuestIcon.blp"); + LOG_INFO(" - Turn-in: Interface\\GossipFrame\\ActiveQuestIcon.blp"); + LOG_INFO(" - Incomplete: Interface\\GossipFrame\\IncompleteQuestIcon.blp"); - // Load quest turn-in marker (silver ? - completable quest) - { - std::string path = "Spells\\Quest\\QuestGiverTurnIn.m2"; - std::vector m2Data = assetManager->readFile(path); - if (!m2Data.empty()) { - pipeline::M2Model model = pipeline::M2Loader::load(m2Data); - if (!model.vertices.empty()) { - questQuestionMarkModelId_ = 60001; - if (m2Renderer->loadModel(model, questQuestionMarkModelId_)) { - LOG_INFO("Loaded quest marker: ", path); - } else { - LOG_WARNING("Failed to upload quest marker to GPU: ", path); - } - } else { - LOG_WARNING("Failed to parse quest marker: ", path); - } - } else { - LOG_WARNING("Failed to read quest marker: ", path); - } - } + // TODO: Implement billboard sprite rendering for quest markers + // For now, the 2D ImGui markers will continue to work } void Application::updateQuestMarkers() {