summaryrefslogtreecommitdiff
path: root/src/asset-manager.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-08-05 19:07:06 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-08-06 17:00:26 -0400
commit9a48fc73d7a25685fc7917c3edc271f595e093da (patch)
tree0f400205af7d419e9f4fb40ebd3ad1db12c49219 /src/asset-manager.cpp
parentf7d860cee74ad3b94e0d15ea157783b7760f6d55 (diff)
pke: first-pass add asset details
Diffstat (limited to 'src/asset-manager.cpp')
-rw-r--r--src/asset-manager.cpp32
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;