Deki 1.3.0
Modular C++ 2D engine for embedded displays and desktop
Loading...
Searching...
No Matches
AssetManager.h File Reference

Unified asset manager for loading assets by GUID or path. More...

Classes

class  Deki::AssetManager

Namespaces

namespace  Deki

Macros

#define DEKI_ASSET_MANAGER_API
#define REGISTER_ASSET_TYPE(TypeName, LoadFunc)
#define REGISTER_ASSET_TYPE_WITH_MEMLOAD(TypeName, LoadFunc, MemLoadFunc)

Typedefs

using AssetLoadFn = void* (*)(const char* path)
using AssetMemLoadFn = void* (*)(const uint8_t* data, size_t size)
using AssetUnloadFn = void (*)(void* asset)

Detailed Description

Unified asset manager for loading assets by GUID or path.

Single AssetManager that works on all platforms:

  • Load<T>() - loads using path, looks up GUID from table
  • LoadByGuidAndType() - loads using GUID and type name string

The GUID table is loaded at startup from a file generated by the build system.

Macro Definition Documentation

◆ DEKI_ASSET_MANAGER_API

#define DEKI_ASSET_MANAGER_API

◆ REGISTER_ASSET_TYPE

#define REGISTER_ASSET_TYPE ( TypeName,
LoadFunc )
Value:
namespace \
{ \
struct _AssetTypeReg_##TypeName \
{ \
_AssetTypeReg_##TypeName() \
{ \
Deki::AssetManager::RegisterLoader( \
TypeName::AssetTypeName, \
[](const char* p) -> void* { return LoadFunc(p); }, \
[](void* a) { delete static_cast<TypeName*>(a); }); \
} \
}; \
static _AssetTypeReg_##TypeName _assetReg_##TypeName; \
}

◆ REGISTER_ASSET_TYPE_WITH_MEMLOAD

#define REGISTER_ASSET_TYPE_WITH_MEMLOAD ( TypeName,
LoadFunc,
MemLoadFunc )
Value:
namespace \
{ \
struct _AssetTypeReg_##TypeName \
{ \
_AssetTypeReg_##TypeName() \
{ \
Deki::AssetManager::RegisterLoader( \
TypeName::AssetTypeName, \
[](const char* p) -> void* { return LoadFunc(p); }, \
[](void* a) { delete static_cast<TypeName*>(a); }, \
[](const uint8_t* d, size_t s) -> void* { return MemLoadFunc(d, s); }); \
} \
}; \
static _AssetTypeReg_##TypeName _assetReg_##TypeName; \
}

Typedef Documentation

◆ AssetLoadFn

using AssetLoadFn = void* (*)(const char* path)

◆ AssetMemLoadFn

using AssetMemLoadFn = void* (*)(const uint8_t* data, size_t size)

◆ AssetUnloadFn

using AssetUnloadFn = void (*)(void* asset)