summaryrefslogtreecommitdiffstats
path: root/src/render/backend/renderersettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/backend/renderersettings.cpp')
-rw-r--r--src/render/backend/renderersettings.cpp35
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