separate out RenderLoop/FilamentViewer construction/destruction

This commit is contained in:
Nick Fisher
2025-03-07 18:53:36 +08:00
parent be61d5e5ca
commit aa26f4d0df
7 changed files with 125 additions and 68 deletions

View File

@@ -516,9 +516,8 @@ namespace thermion
FilamentViewer::~FilamentViewer()
{
TRACE("Destroying FilamentViewer");
_sceneManager->destroyAll();
for (auto view : _views)
{
view->setRenderTarget(nullptr);
@@ -526,20 +525,20 @@ namespace thermion
}
_views.clear();
TRACE("Destroying render targets");
for(auto rt : _renderTargets) {
destroyRenderTarget(rt);
}
_renderTargets.clear();
TRACE("Destroying swapchains");
for (auto swapChain : _swapChains)
{
_engine->destroy(swapChain);
}
_swapChains.clear();
TRACE("Destroying background image");
if (!_imageEntity.isNull())
{
_engine->destroy(_imageEntity);
@@ -548,13 +547,18 @@ namespace thermion
_engine->destroy(_imageIb);
_engine->destroy(_imageMaterial);
}
TRACE("Destroying SceneManager");
delete _sceneManager;
TRACE("SceneManager destroyed");
_engine->destroyCameraComponent(_mainCamera->getEntity());
_mainCamera = nullptr;
_engine->destroy(_scene);
_engine->destroy(_renderer);
TRACE("Destroying engine");
Engine::destroy(&_engine);
TRACE("Engine destroyed");
delete _resourceLoaderWrapper;
TRACE("Destruction complete.");
}
Renderer *FilamentViewer::getRenderer() { return _renderer; }