63 lines
1.3 KiB
C
63 lines
1.3 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <types/ptr/ref_counted.h>
|
|||
|
|
#include <types/base/types.h>
|
|||
|
|
#include <string>
|
|||
|
|
|
|||
|
|
namespace extra2d {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 资源类型枚举
|
|||
|
|
*/
|
|||
|
|
enum class ResourceType : uint8 {
|
|||
|
|
Texture, // 纹理
|
|||
|
|
Shader, // 着色器
|
|||
|
|
Material, // 材质
|
|||
|
|
Font, // 字体
|
|||
|
|
FontAtlas, // 字体图集
|
|||
|
|
Text, // 文本
|
|||
|
|
Audio, // 音频
|
|||
|
|
Mesh // 网格
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 资源基类
|
|||
|
|
*
|
|||
|
|
* 所有引擎资源都继承此类,支持引用计数生命周期管理
|
|||
|
|
*/
|
|||
|
|
class Resource : public RefCounted {
|
|||
|
|
public:
|
|||
|
|
virtual ~Resource() = default;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取资源类型
|
|||
|
|
* @return 资源类型枚举
|
|||
|
|
*/
|
|||
|
|
virtual ResourceType getType() const = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取资源名称
|
|||
|
|
* @return 资源名称
|
|||
|
|
*/
|
|||
|
|
virtual const char* getName() const { return name_.c_str(); }
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取资源ID
|
|||
|
|
* @return 资源唯一ID
|
|||
|
|
*/
|
|||
|
|
uint32 getId() const { return id_; }
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 检查资源是否已加载
|
|||
|
|
* @return 是否已加载
|
|||
|
|
*/
|
|||
|
|
bool isLoaded() const { return loaded_; }
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
std::string name_; // 资源名称
|
|||
|
|
uint32 id_ = 0; // 资源唯一ID
|
|||
|
|
bool loaded_ = false; // 是否已加载
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
} // namespace extra2d
|