summaryrefslogtreecommitdiff
path: root/src/asset-manager.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-22 19:33:26 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-23 11:43:15 -0500
commitb911c5b6c37ab13be6188cf039cd4246414fc7b5 (patch)
treeda4743a719e8134abb35f87f5097541e09c8f581 /src/asset-manager.hpp
parenta3937e7eef97cb0badcd65c390b9dd39d4cfd094 (diff)
first pass background asset loading - buggy
Diffstat (limited to 'src/asset-manager.hpp')
-rw-r--r--src/asset-manager.hpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/asset-manager.hpp b/src/asset-manager.hpp
index 001ec4f..36516b5 100644
--- a/src/asset-manager.hpp
+++ b/src/asset-manager.hpp
@@ -4,25 +4,34 @@
#include "macros.hpp"
#include "memory.hpp"
-#include <fstream>
#include <cstdint>
-#include <cstring>
-#include <cassert>
+#include <future>
struct AssetHandle : public PkeHandle { };
constexpr AssetHandle AssetHandle_MAX = AssetHandle{};
+TypeSafeInt_Const_Expr(AssetLoadingState, uint8_t, 0xFF);
+
+const AssetLoadingState PKE_ASSET_LOADING_STATE_UNLOADED = AssetLoadingState {0};
+const AssetLoadingState PKE_ASSET_LOADING_STATE_LOADING = AssetLoadingState {1};
+const AssetLoadingState PKE_ASSET_LOADING_STATE_LOADED = AssetLoadingState {2};
+const AssetLoadingState PKE_ASSET_LOADING_STATE_FAILED = AssetLoadingState {3};
+
struct Asset{
char key[16] = {'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};
+ const char *basePath = nullptr;
int64_t size = 0;
void *ptr = nullptr;
+ std::future<void> future;
+ int8_t referenceCount = 0;
+ AssetLoadingState state = PKE_ASSET_LOADING_STATE_UNLOADED;
};
void AM_Init();
AssetHandle AM_Register(const void *data, int64_t size, std::size_t alignment, const char *key);
AssetHandle AM_Register(const char *path);
-void AM_Destroy(AssetHandle assetHandle);
+void AM_Release(AssetHandle assetHandle);
const Asset *AM_Get(AssetHandle assetHandle);
void AM_Teardown();
void AM_DebugPrint();