From 9deab224da50aa2ae4e5c3ad487f6291e6c76a33 Mon Sep 17 00:00:00 2001 From: bjorn Date: Sat, 19 Jan 2019 21:46:42 -0800 Subject: [PATCH] Handle scene root properly; --- src/data/modelData.c | 5 +++-- src/graphics/model.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/data/modelData.c b/src/data/modelData.c index ceaed64f..ea078407 100644 --- a/src/data/modelData.c +++ b/src/data/modelData.c @@ -356,8 +356,9 @@ ModelData* lovrModelDataInit(ModelData* model, Blob* source, ModelDataIO io) { // Make space for fake root node if the root scene has multiple root nodes if (rootScene >= 0 && scenes[rootScene].nodeCount > 1) { - model->nodeCount++; info.childCount += model->nodeCount; + info.totalSize += sizeof(ModelNode) + model->nodeCount * sizeof(uint32_t); + model->nodeCount++; } size_t offset = 0; @@ -833,7 +834,7 @@ ModelData* lovrModelDataInit(ModelData* model, Blob* source, ModelDataIO io) { gltfString key = NOM_STR(json, token); if (STR_EQ(key, "nodes")) { for (int j = (token++)->size; j > 0; j--) { - lastNode->children[i] = NOM_INT(json, token); + lastNode->children[lastNode->childCount - j] = NOM_INT(json, token); } } else { token += NOM_VALUE(json, token); diff --git a/src/graphics/model.c b/src/graphics/model.c index 3da1f8b8..74c3d635 100644 --- a/src/graphics/model.c +++ b/src/graphics/model.c @@ -192,8 +192,8 @@ void lovrModelDestroy(void* ref) { } void lovrModelDraw(Model* model, mat4 transform, int instances) { - updateGlobalNodeTransform(model, 0, transform); - renderNode(model, 0, instances); // TODO use root + updateGlobalNodeTransform(model, model->data->rootNode, transform); + renderNode(model, model->data->rootNode, instances); } Animator* lovrModelGetAnimator(Model* model) {