mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
Rewrite minimap to use pre-baked BLP tile textures from MPQ archives
Replace the 3D top-down rendered minimap with WoW's native pre-rendered BLP tile textures loaded via md5translate.trs. Tiles are composited into a 3x3 grid FBO with proper axis transposition matching the ADT terrain convention. The screen shader provides camera-rotation, circular mask, directional player arrow, and 20% transparency. Minimap is now on by default with the N toggle key removed.
This commit is contained in:
parent
d8e2becbaa
commit
47945451be
4 changed files with 435 additions and 129 deletions
|
|
@ -1064,15 +1064,6 @@ void Renderer::renderWorld(game::World* world) {
|
|||
glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
|
||||
// Render minimap overlay
|
||||
if (minimap && camera && window) {
|
||||
glm::vec3 minimapCenter = camera->getPosition();
|
||||
if (cameraController && cameraController->isThirdPerson()) {
|
||||
minimapCenter = characterPosition;
|
||||
}
|
||||
minimap->render(*camera, minimapCenter, window->getWidth(), window->getHeight());
|
||||
}
|
||||
|
||||
// --- Resolve MSAA → non-MSAA texture ---
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, sceneFBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, resolveFBO);
|
||||
|
|
@ -1096,6 +1087,15 @@ void Renderer::renderWorld(game::World* world) {
|
|||
postProcessShader->unuse();
|
||||
}
|
||||
|
||||
// Render minimap overlay (after post-process so it's not overwritten)
|
||||
if (minimap && camera && window) {
|
||||
glm::vec3 minimapCenter = camera->getPosition();
|
||||
if (cameraController && cameraController->isThirdPerson()) {
|
||||
minimapCenter = characterPosition;
|
||||
}
|
||||
minimap->render(*camera, minimapCenter, window->getWidth(), window->getHeight());
|
||||
}
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
auto renderEnd = std::chrono::steady_clock::now();
|
||||
|
|
@ -1307,9 +1307,9 @@ bool Renderer::loadTestTerrain(pipeline::AssetManager* assetManager, const std::
|
|||
if (characterRenderer) {
|
||||
characterRenderer->setAssetManager(assetManager);
|
||||
}
|
||||
// Wire terrain renderer to minimap
|
||||
// Wire asset manager to minimap for tile texture loading
|
||||
if (minimap) {
|
||||
minimap->setTerrainRenderer(terrainRenderer.get());
|
||||
minimap->setAssetManager(assetManager);
|
||||
}
|
||||
// Wire terrain manager, WMO renderer, and water renderer to camera controller
|
||||
if (cameraController) {
|
||||
|
|
@ -1349,6 +1349,9 @@ bool Renderer::loadTestTerrain(pipeline::AssetManager* assetManager, const std::
|
|||
// Extract map name
|
||||
std::string mapName = filename.substr(0, firstUnderscore != std::string::npos ? firstUnderscore : filename.size());
|
||||
terrainManager->setMapName(mapName);
|
||||
if (minimap) {
|
||||
minimap->setMapName(mapName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue