diff --git a/demo/demo/rollball.cpp b/demo/demo/rollball.cpp index 0838fffb1816f267fae5abf80e81beec42b718ae..55f86311a4ca27a8e96c5824a0c441dcba10833f 100644 --- a/demo/demo/rollball.cpp +++ b/demo/demo/rollball.cpp @@ -85,7 +85,7 @@ namespace demo { // asset loader auto* assetLoader = m_owner.service<fggl::assets::Loader>(); - assetLoader->load("rollball.yml", fggl::entity::PROTOTYPE_ASSET); + assetLoader->load("rollball.yml", fggl::entity::PROTOTYPE_ASSET, entFactory); assetLoader->load("rollball.yml", fggl::entity::SCENE, this); // collectable callbacks diff --git a/fggl/entity/loader/loader.cpp b/fggl/entity/loader/loader.cpp index 4baa79016a395cb6a797a2fa1ca8d9775e8fa8b7..ba19af30f43814aa2b9b94f8df919df758faa3e8 100644 --- a/fggl/entity/loader/loader.cpp +++ b/fggl/entity/loader/loader.cpp @@ -77,7 +77,7 @@ namespace fggl::entity { return nullptr; } - assets::AssetRefRaw load_prototype(assets::Loader* loader, EntityFactory *factory, const assets::AssetGUID &guid, assets::AssetData data) { + assets::AssetRefRaw load_prototype(assets::Loader* loader, const assets::AssetGUID &guid, assets::AssetData data, EntityFactory* factory) { auto *filePath = std::get<assets::AssetPath *>(data); // We need to process the prototypes, and load them into the asset system. diff --git a/fggl/entity/module.cpp b/fggl/entity/module.cpp index d6447e42c7f68ffe32f9bacff60f3ea11415951e..22cf0a0f727d833d09320c45eff5e0bc11dd8df4 100644 --- a/fggl/entity/module.cpp +++ b/fggl/entity/module.cpp @@ -45,7 +45,11 @@ namespace fggl::entity { // we are responsible for prefabs... auto *assetLoader = services.get<assets::Loader>(); assetLoader->setFactory(PROTOTYPE_ASSET, [factory](assets::Loader* loader, const assets::AssetGUID &a, assets::AssetData b, void* ptr) { - return load_prototype(loader, factory, a, b); + EntityFactory* facPtr = factory; + if ( ptr != nullptr ) { + facPtr = (EntityFactory*)ptr; + } + return load_prototype(loader, a, b, facPtr); }, assets::LoadType::PATH); assetLoader->setFactory(SCENE, load_scene, assets::LoadType::PATH); diff --git a/include/fggl/entity/loader/loader.hpp b/include/fggl/entity/loader/loader.hpp index 9a816dda7acd1869f15a7dfdb0362638683c2c23..322b76c97981d8e0ccad7bbaef4cf9c3207bcad1 100644 --- a/include/fggl/entity/loader/loader.hpp +++ b/include/fggl/entity/loader/loader.hpp @@ -173,7 +173,7 @@ namespace fggl::entity { } }; - assets::AssetRefRaw load_prototype(assets::Loader* loader, EntityFactory *factory, const assets::AssetGUID &guid, assets::AssetData data); + assets::AssetRefRaw load_prototype(assets::Loader* loader, const assets::AssetGUID &guid, assets::AssetData data, EntityFactory* factory); assets::AssetRefRaw load_scene(assets::Loader* loader, const assets::AssetGUID& asset, assets::AssetData data, void* ptr); } // namespace fggl::entity