#pragma once #include #include #include 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