2 #ifndef _YI_ASSET_MANAGER_H_ 3 #define _YI_ASSET_MANAGER_H_ 15 struct CYIEmbeddedShader;
17 #ifndef YI_USE_CASE_INSENSITIVE_ASSET_LOCATING 23 #define YI_USE_CASE_INSENSITIVE_ASSET_LOCATING YI_UWP && YI_XBOX_ONE 24 #endif //YI_USE_CASE_INSENSITIVE_ASSET_LOCATING 116 bool AddAsset(
const std::shared_ptr<CYIAsset> &pAsset);
131 std::vector<std::shared_ptr<CYIAsset>>
GetAssets()
const;
180 void RemoveAsset(
const std::shared_ptr<CYIAsset> &pAsset);
202 bool IsSystemAsset(
const std::shared_ptr<const CYIAsset> &pAsset);
205 typedef std::map<ssize_t, std::weak_ptr<CYIAsset>> AssetMap;
206 typedef AssetMap::iterator AssetMapIterator;
207 typedef AssetMap::const_iterator AssetMapConstIterator;
209 typedef std::map<ssize_t, std::shared_ptr<CYIAsset>> SystemAssetMap;
210 typedef SystemAssetMap::iterator SystemAssetMapIterator;
211 typedef SystemAssetMap::const_iterator SystemAssetMapConstIterator;
213 #if YI_USE_CASE_INSENSITIVE_ASSET_LOCATING 216 typedef std::map<CYIString, std::weak_ptr<CYIAsset>> AssetStringMap;
219 typedef AssetStringMap::iterator AssetStringMapIterator;
220 typedef AssetStringMap::const_iterator AssetStringMapConstIterator;
226 void AddAssetToMap(
const std::shared_ptr<CYIAsset> &pAsset);
229 std::shared_ptr<CYIAssetShaderProgram> AddAssetShaderProgram(
const CYIString &shaderProgramName,
231 const CYIEmbeddedShader &vertexShaderSource,
233 const CYIEmbeddedShader &fragmentShaderSource);
237 const CYIEmbeddedShader &shaderSource);
239 void AddBuiltInTextureAssets();
240 void AddAssetTexturesFromRawImages();
244 SystemAssetMap m_SystemAssets;
245 AssetStringMap m_NamedAssets;
246 AssetStringMap m_AssetLocations;
247 std::list<std::unique_ptr<CYIAssetCacheStrategy>> m_CacheStrategyList;
248 std::map<uint64_t, std::weak_ptr<CYIRemoteAssetCatalog>> m_AssetCatalogs;
258 #endif // _YI_ASSET_MANAGER_H_
static const CYIString YI_PROGRAM_3D_BGR
Definition: YiAssetManager.h:51
static const CYIString YI_VSHADER_2D_NANOVG
Definition: YiAssetManager.h:95
static const CYIString YI_PROGRAM_3D_EFFECT_TINT_FLIP_COPY
Definition: YiAssetManager.h:91
static const CYIString YI_PROGRAM_3D_TEXT
Definition: YiAssetManager.h:65
An asset representing remote asset catalogs.
Definition: YiRemoteAssetCatalog.h:30
void RemoveAsset(const std::shared_ptr< CYIAsset > &pAsset)
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:114
static const CYIString YI_VSHADER_3D_EFFECT_BLUR_V
Definition: YiAssetManager.h:80
std::shared_ptr< CYIRemoteAssetCatalog > GetRemoteAssetCatalog(uint64_t uCatalogID) const
void ExecuteCacheStrategies()
bool IsSystemAsset(const std::shared_ptr< const CYIAsset > &pAsset)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
static const CYIString YI_PROGRAM_VERTEX_COLOR
Definition: YiAssetManager.h:74
static const CYIString YI_FSHADER_VERTEX_COLOR
Definition: YiAssetManager.h:73
static const CYIString YI_FSHADER_3D_EFFECT_BLUR_V
Definition: YiAssetManager.h:81
bool AddAsset(const std::shared_ptr< CYIAsset > &pAsset)
static const CYIString YI_SMALL_CROSSHAIR_TEXTURE
Definition: YiAssetManager.h:76
Definition: YiStringUtilities.h:35
static const CYIString YI_FSHADER_3D_EFFECT_FLIP_COPY
Definition: YiAssetManager.h:84
static const CYIString YI_FSHADER_2D_GEOMETRY_BATCH
Definition: YiAssetManager.h:93
static const CYIString YI_FSHADER_3D_EFFECT_TINT
Definition: YiAssetManager.h:87
Definition: YiRecursiveMutex.h:15
static const CYIString YI_PROGRAM_3D_RGB
Definition: YiAssetManager.h:53
static const CYIString YI_FSHADER_SDF_TEXT
Definition: YiAssetManager.h:67
std::shared_ptr< CYIAsset > GetAssetFromPath(const CYIString &path)
static const CYIString YI_VSHADER_3D_EFFECT_TINT_FLIP_COPY
Definition: YiAssetManager.h:89
static const CYIString YI_NORMALIZED_QUAD_VBO
Definition: YiAssetManager.h:46
static const CYIString YI_VSHADER_3D
Definition: YiAssetManager.h:49
static const CYIString YI_FSHADER_3D_YUV
Definition: YiAssetManager.h:55
static const CYIString YI_VSHADER_3D_EFFECT_TINT
Definition: YiAssetManager.h:86
static const CYIString YI_PROGRAM_3D_EFFECT_BLUR_H
Definition: YiAssetManager.h:79
static const CYIString YI_PROGRAM_3D_EFFECT_FLIP_COPY
Definition: YiAssetManager.h:85
std::vector< std::shared_ptr< CYIRemoteAssetCatalog > > GetRemoteAssetCatalogs() const
Base class for an asset caching strategy. Specializations of this class could apply one of more algor...
Definition: YiAssetCacheStrategy.h:18
static const CYIString YI_VSHADER_3D_TEXT
Definition: YiAssetManager.h:63
SHADER_TYPE
Definition: YiAssetShaderObject.h:25
void RestoreHardwareAssets()
static const CYIString YI_CHECKERBOARD_TEXTURE
Definition: YiAssetManager.h:60
static const CYIString YI_PROGRAM_3D_YUV_SEPARATE
Definition: YiAssetManager.h:59
static const CYIString YI_VSHADER_VERTEX_COLOR
Definition: YiAssetManager.h:72
static const CYIString YI_PROGRAM_SDF_APPROX_TEXT
Definition: YiAssetManager.h:71
static const CYIString YI_PROGRAM_3D_EFFECT_TINT
Definition: YiAssetManager.h:88
std::unique_ptr< CYIAssetCacheStrategy > RemoveCacheStrategy(const CYIAssetCacheStrategy *pStrategy)
void AddCacheStrategy(std::unique_ptr< CYIAssetCacheStrategy > pStrategy)
static const CYIString YI_FSHADER_2D_NANOVG
Definition: YiAssetManager.h:96
static const CYIString YI_FSHADER_3D_BGR
Definition: YiAssetManager.h:50
The abstract runtime representation of a C++ type.
Definition: YiRtti.h:48
static const CYIString YI_VSHADER_2D_GEOMETRY_BATCH
Definition: YiAssetManager.h:92
static const CYIString YI_PROGRAM_3D_SOLID
Definition: YiAssetManager.h:62
static const CYIString YI_VSHADER_SDF_TEXT
Definition: YiAssetManager.h:66
static const CYIString YI_VSHADER_SDF_APPROX_TEXT
Definition: YiAssetManager.h:69
void RemoveAssetsOfType(const CYIRuntimeTypeInfo &assetType)
This class provides a cache that users can use to store various types of assets.
Definition: YiAssetManager.h:43
static const CYIString YI_FSHADER_3D_YUV_SEPARATE
Definition: YiAssetManager.h:58
static const CYIString YI_PROGRAM_3D_YUV
Definition: YiAssetManager.h:56
static const CYIString YI_PROGRAM_3D_EFFECT_BLUR_V
Definition: YiAssetManager.h:82
static const CYIString YI_PROGRAM_2D_NANOVG
Definition: YiAssetManager.h:97
std::vector< std::shared_ptr< CYIAsset > > GetAssets() const
std::shared_ptr< CYIAsset > GetAsset(const CYIString &name)
virtual ~CYIAssetManager()
int ssize_t
Definition: YiPredefWin32.h:133
Base class for any asset. An asset provides functions for dynamically loading and unloading itself an...
Definition: YiAsset.h:33
void DumpAssetList() const
static const CYIString YI_FSHADER_3D_EFFECT_TINT_FLIP_COPY
Definition: YiAssetManager.h:90
static const CYIString YI_CROSSHAIR_TEXTURE
Definition: YiAssetManager.h:75
static const CYIString YI_TEXT_ATLAS_IBO
Definition: YiAssetManager.h:48
void InvalidateHardwareAssets()
static const CYIString YI_PROGRAM_SDF_TEXT
Definition: YiAssetManager.h:68
static const CYIString YI_NORMALIZED_QUAD_YFLIP_VBO
Definition: YiAssetManager.h:47
static const CYIString YI_FSHADER_3D_TEXT
Definition: YiAssetManager.h:64
static const CYIString YI_FSHADER_3D_EFFECT_BLUR_H
Definition: YiAssetManager.h:78
static const CYIString YI_VSHADER_3D_EFFECT_BLUR_H
Definition: YiAssetManager.h:77
static const CYIString YI_FSHADER_3D_RGB
Definition: YiAssetManager.h:52
static const CYIString YI_VSHADER_3D_YUV
Definition: YiAssetManager.h:54
static const CYIString YI_PROGRAM_2D_GEOMETRY_BATCH
Definition: YiAssetManager.h:94
static const CYIString YI_FSHADER_SDF_APPROX_TEXT
Definition: YiAssetManager.h:70
static const CYIString YI_VSHADER_3D_YUV_SEPARATE
Definition: YiAssetManager.h:57
static const CYIString YI_FSHADER_3D_SOLID
Definition: YiAssetManager.h:61
static const CYIString YI_VSHADER_3D_EFFECT_FLIP_COPY
Definition: YiAssetManager.h:83