diff options
Diffstat (limited to 'src/asset-manager.cpp')
| -rw-r--r-- | src/asset-manager.cpp | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/asset-manager.cpp b/src/asset-manager.cpp index f0f6d5e..27fbf67 100644 --- a/src/asset-manager.cpp +++ b/src/asset-manager.cpp @@ -28,14 +28,14 @@ AssetKey EngineDefinedAssets[EngineDefinedAssetCount] = { void AM_Init() { new (&asset_mstr.bc) pk_bkt_arr_t<Asset>{ pk_bkt_arr_handle_MAX_constexpr }; asset_mstr.thread_pool = PkeThreads_Init(2, 255); - AM_Register(EngineDefinedAssets[0], PKE_ASSET_TYPE_SHADER, "assets/shaders/present.vert.spv"); - AM_Register(EngineDefinedAssets[1], PKE_ASSET_TYPE_SHADER, "assets/shaders/present.frag.spv"); - AM_Register(EngineDefinedAssets[2], PKE_ASSET_TYPE_SHADER, "assets/shaders/vertex.vert.spv"); - AM_Register(EngineDefinedAssets[3], PKE_ASSET_TYPE_SHADER, "assets/shaders/texture.frag.spv"); - AM_Register(EngineDefinedAssets[4], PKE_ASSET_TYPE_SHADER, "assets/shaders/glyph.vert.spv"); - AM_Register(EngineDefinedAssets[5], PKE_ASSET_TYPE_SHADER, "assets/shaders/glyph.frag.spv"); - AM_Register(EngineDefinedAssets[6], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-base.vert.spv"); - AM_Register(EngineDefinedAssets[7], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-base.frag.spv"); + AM_Register(EngineDefinedAssets[0], PKE_ASSET_TYPE_SHADER, "assets/shaders/present.vert.spv", nullptr); + AM_Register(EngineDefinedAssets[1], PKE_ASSET_TYPE_SHADER, "assets/shaders/present.frag.spv", nullptr); + AM_Register(EngineDefinedAssets[2], PKE_ASSET_TYPE_SHADER, "assets/shaders/vertex.vert.spv", nullptr); + AM_Register(EngineDefinedAssets[3], PKE_ASSET_TYPE_SHADER, "assets/shaders/texture.frag.spv", nullptr); + AM_Register(EngineDefinedAssets[4], PKE_ASSET_TYPE_SHADER, "assets/shaders/glyph.vert.spv", nullptr); + AM_Register(EngineDefinedAssets[5], PKE_ASSET_TYPE_SHADER, "assets/shaders/glyph.frag.spv", nullptr); + AM_Register(EngineDefinedAssets[6], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-base.vert.spv", nullptr); + AM_Register(EngineDefinedAssets[7], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-base.frag.spv", nullptr); } void AM_Load_Task(Asset &asset) { @@ -65,7 +65,7 @@ inline Asset *AM_Get_Inner(const char (&key)[AssetKeyLength]) { return &asset_mstr.bc[handle]; } -AssetHandle AM_Register(const AssetKey &key, AssetType type, const void *data, int64_t size, std::size_t alignment) { +AssetHandle AM_Register(const AssetKey &key, AssetType type, const void *data, int64_t size, std::size_t alignment, union pke_asset_details *details) { assert(data != nullptr && "Attempt to register invalid asset data"); assert(data != CAFE_BABE(void) && "Attempt to register invalid asset data"); assert(size != 0 && "Attempt to register asset data of size 0"); @@ -76,6 +76,8 @@ AssetHandle AM_Register(const AssetKey &key, AssetType type, const void *data, i AssetHandle assetHandle{pk_bkt_arr_new_handle(&asset_mstr.bc)}; Asset &asset = asset_mstr.bc[assetHandle]; new (&asset) Asset{}; + memset(&asset.details, 0, sizeof(union pke_asset_details)); + if (details != nullptr) asset.details = *details; asset.handle = assetHandle; strncpy(asset.key, key, AssetKeyLength); asset.basePath = nullptr; @@ -88,7 +90,7 @@ AssetHandle AM_Register(const AssetKey &key, AssetType type, const void *data, i return assetHandle; } -AssetHandle AM_Register(const AssetKey &key, AssetType type, const char *path) { +AssetHandle AM_Register(const AssetKey &key, AssetType type, const char *path, union pke_asset_details *details) { Asset *searchedAsset = AM_Get_Inner(key); if (searchedAsset != nullptr) { return searchedAsset->handle; @@ -96,6 +98,8 @@ AssetHandle AM_Register(const AssetKey &key, AssetType type, const char *path) { AssetHandle assetHandle{pk_bkt_arr_new_handle(&asset_mstr.bc)}; Asset &asset = asset_mstr.bc[assetHandle]; new (&asset) Asset{}; + memset(&asset.details, 0, sizeof(union pke_asset_details)); + if (details != nullptr) asset.details = *details; asset.handle = assetHandle; strncpy(asset.key, key, AssetKeyLength); int64_t pathLen = strlen(path); @@ -114,7 +118,7 @@ AssetHandle AM_Register(const AssetKey &key, AssetType type, const char *path) { return assetHandle; } -AssetHandle AM_Register(const char *path, AssetType type) { +AssetHandle AM_Register(const char *path, AssetType type, union pke_asset_details *details) { NULL_CHAR_ARR(assetKey, AssetKeyLength); int64_t pathLen = strlen(path); int64_t pathOffset = (pathLen > AssetKeyLength ? pathLen - AssetKeyLength : 0); @@ -128,6 +132,8 @@ AssetHandle AM_Register(const char *path, AssetType type) { AssetHandle assetHandle{pk_bkt_arr_new_handle(&asset_mstr.bc)}; Asset &asset = asset_mstr.bc[assetHandle]; new (&asset) Asset{}; + memset(&asset.details, 0, sizeof(union pke_asset_details)); + if (details != nullptr) asset.details = *details; asset.handle = assetHandle; strncpy(asset.key, assetKey, AssetKeyLength); auto *copiedPath = pk_new_arr<char>(pathLen + 1); @@ -145,7 +151,7 @@ AssetHandle AM_Register(const char *path, AssetType type) { return assetHandle; } -AssetHandle AM_Register_Static(const AssetKey &key, AssetType type, const void *data, int64_t size) { +AssetHandle AM_Register_Static(const AssetKey &key, AssetType type, const void *data, int64_t size, union pke_asset_details *details) { assert(data != nullptr && "Attempt to register invalid asset data"); assert(data != CAFE_BABE(void) && "Attempt to register invalid asset data"); assert(size != 0 && "Attempt to register asset data of size 0"); @@ -156,6 +162,8 @@ AssetHandle AM_Register_Static(const AssetKey &key, AssetType type, const void * AssetHandle assetHandle{pk_bkt_arr_new_handle(&asset_mstr.bc)}; Asset &asset = asset_mstr.bc[assetHandle]; new (&asset) Asset{}; + memset(&asset.details, 0, sizeof(union pke_asset_details)); + if (details != nullptr) asset.details = *details; asset.handle = assetHandle; strncpy(asset.key, key, AssetKeyLength); asset.basePath = nullptr; |
