Extra2D/include/resource/resource.h

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