#pragma once #include #include #include #include namespace extra2d { /** * @brief 资源加载器接口 * * 每种资源类型实现一个加载器,插件化设计。 * * @tparam T 资源类型 */ template class AssetLoader { public: virtual ~AssetLoader() = default; /** * @brief 从文件加载资源 * @param path 文件路径 * @return 资源指针,失败返回 nullptr */ virtual Ptr load(const std::string& path) = 0; /** * @brief 从内存加载资源 * @param data 数据指针 * @param size 数据大小 * @return 资源指针,失败返回 nullptr */ virtual Ptr loadFromMemory(const uint8_t* data, size_t size) = 0; /** * @brief 获取支持的文件扩展名 * @return 扩展名列表(如 ".png", ".jpg") */ virtual std::vector getExtensions() const = 0; }; } // namespace extra2d