diff options
Diffstat (limited to 'src/render/backend/renderersettings.cpp')
-rw-r--r-- | src/render/backend/renderersettings.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/render/backend/renderersettings.cpp b/src/render/backend/renderersettings.cpp index 04d22ee67..0a53746ba 100644 --- a/src/render/backend/renderersettings.cpp +++ b/src/render/backend/renderersettings.cpp @@ -37,6 +37,7 @@ #include "renderersettings_p.h" #include <Qt3DCore/qscenepropertychange.h> +#include <Qt3DRender/private/abstractrenderer_p.h> QT_BEGIN_NAMESPACE @@ -74,6 +75,40 @@ void RendererSettings::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) } } + +RendererSettingsFunctor::RendererSettingsFunctor(AbstractRenderer *renderer) + : m_renderer(renderer) +{ +} + +Qt3DCore::QBackendNode *RendererSettingsFunctor::create(Qt3DCore::QNode *frontend, const Qt3DCore::QBackendNodeFactory *factory) const +{ + QRendererSettings *settingsFrontend = static_cast<QRendererSettings *>(frontend); + if (m_renderer->settings() != Q_NULLPTR) { + qWarning() << "Renderer settings already exists"; + return Q_NULLPTR; + } + + RendererSettings *settings = new RendererSettings; + settings->setFactory(factory); + settings->setPeer(settingsFrontend); + m_renderer->setSettings(settings); + return settings; +} + +Qt3DCore::QBackendNode *RendererSettingsFunctor::get(const Qt3DCore::QNodeId &id) const +{ + Q_UNUSED(id); + return Q_NULLPTR; +} + +void RendererSettingsFunctor::destroy(const Qt3DCore::QNodeId &id) const +{ + Q_UNUSED(id); + // Deletes the old settings object + m_renderer->setSettings(Q_NULLPTR); +} + } // namespace Render } // namespace Qt3DRender |