#pragma once #include #include #include #include #include #include #include #include #include #include #include namespace extra2d { /** * @brief 资源管理器类 * * 统一管理所有资源的加载和缓存 */ class ResourceManager : public IModule { public: ResourceManager(); ~ResourceManager() override; // IModule 接口 const char* name() const override { return "ResourceManager"; } ModuleType type() const override { return ModuleType::Core; } int priority() const override { return 10; } bool init() override; void shutdown() override; // 纹理管理 Ptr getTexture(const std::string& path); Ptr createTexture(uint32 width, uint32 height, TextureFormat format); // 着色器管理 Ptr getShader(const std::string& vsPath, const std::string& fsPath); Ptr getShaderFromSource(const std::string& name, const std::string& vsSource, const std::string& fsSource); // 材质管理 Ptr createMaterial(Ptr shader); Ptr getMaterial(const std::string& name); void registerMaterial(const std::string& name, Ptr material); // 字体管理 Ptr getFont(const std::string& path, const FontConfig& config = {}); // 文本管理 Ptr createText(Ptr font, const std::string& content = ""); // 音频管理 Ptr