Added JSONLoader and JSONAsset

Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
2021-06-02 07:59:39 +02:00
parent 70f0449a7b
commit 0ebdf27f86
4 changed files with 28 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ mod_src = [
# Loaders # Loaders
'src/loaders/TextLoader/TextLoader.c', 'src/loaders/TextLoader/TextLoader.c',
'src/loaders/JSONLoader/JSONLoader.c',
] ]
mod_incdir = [ mod_incdir = [

View File

@@ -16,3 +16,10 @@ EV_NS_DEF_BEGIN(TextLoader)
EV_NS_DEF_FN(TextAsset, loadAsset, (AssetHandle, handle)) EV_NS_DEF_FN(TextAsset, loadAsset, (AssetHandle, handle))
EV_NS_DEF_END(TextLoader) EV_NS_DEF_END(TextLoader)
EV_NS_DEF_BEGIN(JSONLoader)
EV_NS_DEF_FN(JSONAsset, loadAsset, (AssetHandle, handle))
EV_NS_DEF_END(JSONLoader)

View File

@@ -5,3 +5,7 @@ TYPE(AssetHandle, GenericHandle)
TYPE(TextAsset, struct { TYPE(TextAsset, struct {
evstring text; evstring text;
}) })
TYPE(JSONAsset, struct {
PTR json_data;
})

View File

@@ -8,6 +8,7 @@
#include "loaders/LoaderCommon.h" #include "loaders/LoaderCommon.h"
#include "loaders/TextLoader/TextLoader.h" #include "loaders/TextLoader/TextLoader.h"
#include "loaders/JSONLoader/JSONLoader.h"
#define AssetSysCheck(...) do { \ #define AssetSysCheck(...) do { \
assetsys_error_t res = __VA_ARGS__; \ assetsys_error_t res = __VA_ARGS__; \
@@ -45,6 +46,16 @@ onRemoveTextAsset(
} }
} }
void
onRemoveJSONAsset(
ECSQuery query)
{
JSONAsset *assets = ECS->getQueryColumn(query, sizeof(JSONAsset), 1);
for(int i = 0; i < ECS->getQueryMatchCount(query); i++) {
ev_jsonloader_jsonasset_destr(assets[i]);
}
}
EV_CONSTRUCTOR EV_CONSTRUCTOR
{ {
static_assert(sizeof(AssetEntityID) == sizeof(AssetHandle), "AssetEntityID not the same size of AssetHandle"); static_assert(sizeof(AssetEntityID) == sizeof(AssetHandle), "AssetEntityID not the same size of AssetHandle");
@@ -62,6 +73,9 @@ EV_CONSTRUCTOR
ev_textloader_setassettype(AssetECS->registerComponent("TextAsset", sizeof(TextAsset), EV_ALIGNOF(TextAsset))); ev_textloader_setassettype(AssetECS->registerComponent("TextAsset", sizeof(TextAsset), EV_ALIGNOF(TextAsset)));
AssetECS->setOnRemoveTrigger("TextAssetOnRemove", "TextAsset", onRemoveTextAsset); AssetECS->setOnRemoveTrigger("TextAssetOnRemove", "TextAsset", onRemoveTextAsset);
ev_jsonloader_setassettype(AssetECS->registerComponent("JSONAsset", sizeof(JSONAsset), EV_ALIGNOF(JSONAsset)));
AssetECS->setOnRemoveTrigger("JSONAssetOnRemove", "JSONAsset", onRemoveJSONAsset);
} }
} }
@@ -158,5 +172,7 @@ EV_BINDINGS
EV_NS_BIND_FN(TextLoader, loadAsset, ev_textloader_loadasset); EV_NS_BIND_FN(TextLoader, loadAsset, ev_textloader_loadasset);
EV_NS_BIND_FN(JSONLoader, loadAsset, ev_jsonloader_loadasset);
return 0; return 0;
} }