/
tomilov
/
sah_kd_tree
Обзор
Документация
Войти
/
tomilov
/
sah_kd_tree
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/viewer/scenes.cpp
51 строка
1 KB
Anatoliy Tomilov
WIP
22 авг 2024, 23:04
22 авг 2024, 23:04
b9d52c0
Код
Авторство
О чём код?
#include <scene_data/scene_data.hpp> #include <scene_loader/scene_loader.hpp> #include <utils/assert.hpp> #include <viewer/scenes.hpp> #include <fmt/std.h> #include <spdlog/spdlog.h> #include <QFileInfo> #include <QStandardPaths> #include <iterator> #include <memory> #include <mutex> #include <utility> using namespace std::string_literals; using namespace std::string_view_literals; namespace viewer { scene_data::SceneDataPtr Scenes::getScene(const std::filesystem::path & scenePath) const { ASSERT(!std::empty(scenePath)); std::lock_guard<std::mutex> lockGuard{mutex}; auto & w = scenes[scenePath]; auto p = w.lock(); if (p) { SPDLOG_TRACE("Old scene data {} reused", scenePath); } else { scene_data::SceneData sceneData; sceneData.name = scenePath.string(); if ((true)) { auto cacheLocation = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); if (!scene_loader::cachingLoad(sceneData, QFileInfo{scenePath}, cacheLocation)) { return nullptr; } } else { if (!scene_loader::load(sceneData, QFileInfo{scenePath})) { return nullptr; } } p = std::make_shared<scene_data::SceneData>(std::move(sceneData)); w = p; SPDLOG_TRACE("New scene data {} created", scenePath); } return p; } } // namespace viewer