#pragma once #include "pipeline/adt_loader.hpp" #include #include #include namespace wowee { namespace pipeline { class AssetManager; } namespace editor { class TextureExporter { public: // Collect all texture paths referenced by the terrain static std::vector collectUsedTextures(const pipeline::ADTTerrain& terrain); // Collect all texture paths referenced by an M2 model (loads the M2 from `am`). // Returns lowercased game paths (e.g. "creature\\foo\\foo.blp"). Empty if M2 not found. static std::vector collectM2Textures(pipeline::AssetManager* am, const std::string& m2Path); // Export all used textures as PNG to an output directory // Returns count of successfully exported textures static int exportTexturesAsPng(pipeline::AssetManager* am, const std::vector& texturePaths, const std::string& outputDir); }; } // namespace editor } // namespace wowee