defer freeing resource until after source data released and enable culling by default
This commit is contained in:
@@ -93,22 +93,29 @@ SceneAsset *SceneAssetLoader::fromGlb(const char *uri) {
|
|||||||
_scene->addEntities(asset->getEntities(), entityCount);
|
_scene->addEntities(asset->getEntities(), entityCount);
|
||||||
|
|
||||||
Log("Added %d entities to scene", entityCount);
|
Log("Added %d entities to scene", entityCount);
|
||||||
|
|
||||||
|
size_t lightEntityCount = asset->getLightEntityCount();
|
||||||
|
Log("Found %d light entities in scene.", lightEntityCount );
|
||||||
|
|
||||||
_resourceLoader->loadResources(asset);
|
_resourceLoader->loadResources(asset);
|
||||||
|
|
||||||
|
Log("Resources loaded.");
|
||||||
|
|
||||||
const Entity *entities = asset->getEntities();
|
const Entity *entities = asset->getEntities();
|
||||||
RenderableManager &rm = _engine->getRenderableManager();
|
RenderableManager &rm = _engine->getRenderableManager();
|
||||||
for (int i = 0; i < asset->getEntityCount(); i++) {
|
for (int i = 0; i < asset->getEntityCount(); i++) {
|
||||||
Entity e = entities[i];
|
Entity e = entities[i];
|
||||||
auto inst = rm.getInstance(e);
|
auto inst = rm.getInstance(e);
|
||||||
// check this
|
// check this
|
||||||
rm.setCulling(inst, false);
|
rm.setCulling(inst, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
_freeResource(rbuf);
|
|
||||||
|
|
||||||
asset->getAnimator()->updateBoneMatrices();
|
asset->getAnimator()->updateBoneMatrices();
|
||||||
|
|
||||||
asset->releaseSourceData();
|
asset->releaseSourceData();
|
||||||
|
Log("Source data released.");
|
||||||
|
|
||||||
|
_freeResource(rbuf);
|
||||||
|
|
||||||
Log("Successfully loaded GLB.");
|
Log("Successfully loaded GLB.");
|
||||||
return new SceneAsset(asset, _engine, _ncm, _loadResource, _freeResource);
|
return new SceneAsset(asset, _engine, _ncm, _loadResource, _freeResource);
|
||||||
|
|||||||
Reference in New Issue
Block a user