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