Add deferred async scene asset loading

This commit is contained in:
2026-04-02 18:50:41 +08:00
parent dd08d8969e
commit 86144416af
18 changed files with 1806 additions and 97 deletions

View File

@@ -2,6 +2,7 @@
#include "Core/EventBus.h"
#include "Core/EditorEvents.h"
#include "Utils/ProjectFileUtils.h"
#include <XCEngine/Core/Asset/ResourceManager.h>
#include <XCEngine/Components/ComponentFactoryRegistry.h>
#include <XCEngine/Components/CameraComponent.h>
#include <XCEngine/Components/LightComponent.h>
@@ -192,7 +193,10 @@ bool SceneManager::RestoreSceneSnapshot(const SceneSnapshot& snapshot) {
}
auto scene = std::make_unique<::XCEngine::Components::Scene>();
scene->DeserializeFromString(snapshot.sceneData);
{
::XCEngine::Resources::ResourceManager::ScopedDeferredSceneLoad deferredLoadScope;
scene->DeserializeFromString(snapshot.sceneData);
}
m_scene = std::move(scene);
m_clipboard.reset();
@@ -245,7 +249,10 @@ bool SceneManager::LoadScene(const std::string& filePath) {
}
auto scene = std::make_unique<::XCEngine::Components::Scene>();
scene->Load(filePath);
{
::XCEngine::Resources::ResourceManager::ScopedDeferredSceneLoad deferredLoadScope;
scene->Load(filePath);
}
m_scene = std::move(scene);
m_clipboard.reset();