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
|