ModelData:getMetadata;

This commit is contained in:
bjorn 2022-08-04 00:27:20 -07:00
parent a6d843c642
commit eac3299bd0
4 changed files with 26 additions and 0 deletions

View File

@ -62,6 +62,18 @@ static ModelAnimation* luax_checkanimation(lua_State* L, int index, ModelData* m
}
}
static int l_lovrModelDataGetMetadata(lua_State* L) {
ModelData* model = luax_checktype(L, 1, ModelData);
if (!model->metadata || model->metadataSize == 0) {
lua_pushnil(L);
} else {
lua_pushlstring(L, model->metadata, model->metadataSize);
}
return 1;
}
static int l_lovrModelDataGetBlobCount(lua_State* L) {
ModelData* model = luax_checktype(L, 1, ModelData);
lua_pushinteger(L, model->blobCount);
@ -731,6 +743,7 @@ static int l_lovrModelDataGetSkinInverseBindMatrix(lua_State* L) {
}
const luaL_Reg lovrModelData[] = {
{ "getMetadata", l_lovrModelDataGetMetadata },
{ "getBlobCount", l_lovrModelDataGetBlobCount },
{ "getBlob", l_lovrModelDataGetBlob },
{ "getImageCount", l_lovrModelDataGetImageCount },

View File

@ -57,6 +57,10 @@ static int l_lovrModelGetData(lua_State* L) {
return 1;
}
static int l_lovrModelGetMetadata(lua_State* L) {
return luax_callmodeldata(L, "getMetadata", 1);
}
static int l_lovrModelGetRootNode(lua_State* L) {
return luax_callmodeldata(L, "getRootNode", 1);
}
@ -356,6 +360,7 @@ static int l_lovrModelGetTexture(lua_State* L) {
const luaL_Reg lovrModel[] = {
{ "getData", l_lovrModelGetData },
{ "getMetadata", l_lovrModelGetMetadata },
{ "getRootNode", l_lovrModelGetRootNode },
{ "getNodeCount", l_lovrModelGetNodeCount },
{ "getNodeName", l_lovrModelGetNodeName },

View File

@ -156,6 +156,9 @@ typedef struct ModelData {
uint32_t ref;
void* data;
char* metadata;
size_t metadataSize;
struct Blob** blobs;
struct Image** images;
ModelBuffer* buffers;

View File

@ -230,6 +230,11 @@ ModelData* lovrModelDataInitGltf(ModelData* model, Blob* source, ModelDataIO* io
binOffset = 0;
}
model->metadata = malloc(jsonLength);
lovrAssert(model->metadata, "Out of memory");
memcpy(model->metadata, json, jsonLength);
model->metadataSize = jsonLength;
// Parse JSON
jsmn_parser parser;
jsmn_init(&parser);