CMAssetsManage/inc/hgl/asset/AssetSource.h
2025-05-10 01:08:28 +08:00

60 lines
1.5 KiB
C++

#pragma once
#include<hgl/type/String.h>
namespace hgl
{
namespace io
{
class InputStream;
}//namespace io
namespace asset
{
/**
* 资产索引方法
*/
enum class AssetIndexType
{
Unknow=0, ///<未知类型
ID, ///<ID
Name, ///<字符串名称
ENUM_CLASS_RANGE(ID,Name)
};//enum class AssetIndexType
/**
* 资产来源
*/
class AssetSource
{
U8String uri_short_name;
public:
const U8String &GetURI()const{return uri_short_name;}
public:
AssetSource(const U8String &);
virtual ~AssetSource();
virtual bool hasAnonymousAccess ()const{return false;}
virtual bool hasNameAccess ()const{return false;}
virtual bool hasIDAccess ()const{return false;}
virtual bool hasPositionAccess ()const{return false;}
public:
virtual io::InputStream * Open (const U8String &){return nullptr;}
virtual AssetSource * CreateSubSource (const U8String &){return nullptr;}
};//class AssetSource
AssetSource *CreateSourceByFilesystem(const U8String &sn,const OSString &pathname,const bool only_read);
AssetSource *GetSource(const U8String &uri_short_name);
io::InputStream *GetAssets(const U8String &uri);
}//namespace asset
}//namespace hgl