diff --git a/engine/scene/sceneLoaderDeserializeJSON.cpp b/engine/scene/sceneLoaderDeserializeJSON.cpp index 7bdc98b7..2879254c 100644 --- a/engine/scene/sceneLoaderDeserializeJSON.cpp +++ b/engine/scene/sceneLoaderDeserializeJSON.cpp @@ -143,7 +143,13 @@ namespace GfxRenderEngine m_SceneDescriptionFile.m_GltfFiles.m_GltfFilesFromScene; for (auto& gltfInfo : gltfInfoVector) { - if (!gltfInfo.m_LoadFuture.get()) + if (!gltfInfo.m_LoadFuture.has_value()) + { + // file was not loaded (probably not found on disk) + continue; + } + auto& loadFuture = gltfInfo.m_LoadFuture.value(); + if (!loadFuture.get()) { LOG_CORE_CRITICAL("gltf file did not load properly: {0}", gltfInfo.m_GltfFile.m_Filename); continue; @@ -212,7 +218,7 @@ namespace GfxRenderEngine LOG_CORE_INFO("loading {0} gltf files (fastgltf)", gltfFileCount); } - std::vector gltfInfoVector; + std::vector gltfInfoVector{}; gltfInfoVector.resize(gltfFileCount); { @@ -230,7 +236,13 @@ namespace GfxRenderEngine for (auto& gltfInfo : gltfInfoVector) { - if (!gltfInfo.m_LoadFuture.get()) + if (!gltfInfo.m_LoadFuture.has_value()) + { + // file was not loaded (probably not found on disk) + continue; + } + auto& loadFuture = gltfInfo.m_LoadFuture.value(); + if (!loadFuture.get()) { LOG_CORE_CRITICAL("gltf file did not load properly: {0}", gltfInfo.m_GltfFile.m_Filename); continue; @@ -749,7 +761,13 @@ namespace GfxRenderEngine { for (auto& terrainInfo : m_TerrainInfos) { - if (!terrainInfo.m_LoadFuture.get()) + if (!terrainInfo.m_LoadFuture.has_value()) + { + // file was not loaded (probably not found on disk) + continue; + } + auto& loadFuture = terrainInfo.m_LoadFuture.value(); + if (!loadFuture.get()) { continue; } diff --git a/engine/scene/sceneLoaderJSON.h b/engine/scene/sceneLoaderJSON.h index f5d9d7dc..3067e0f0 100644 --- a/engine/scene/sceneLoaderJSON.h +++ b/engine/scene/sceneLoaderJSON.h @@ -68,7 +68,7 @@ namespace GfxRenderEngine struct GltfInfo { - std::future m_LoadFuture; + std::optional> m_LoadFuture{std::nullopt}; Gltf::GltfFile m_GltfFile; int m_InstanceCount{0}; std::vector m_InstanceTransforms; @@ -76,7 +76,7 @@ namespace GfxRenderEngine struct TerrainInfo { - std::future m_LoadFuture; + std::optional> m_LoadFuture{std::nullopt}; std::string m_Filename; int m_InstanceCount{0}; std::vector m_InstanceTransforms;