History

Revert "Revert "Mirrors + Portals""

Dale Glass committed 2 years ago

Commit e7591d61 parent b33d35c81 files · +1047 −263Browse files

Showing the changes to interface/src/scripting/RenderScriptingInterface.cpp (1 of 81 files). Show all

Unified · Split

interface/src/scripting/RenderScriptingInterface.cpp+23−1
@@ -9,6 +9,7 @@ · 8 unmodified lines
99 //
1010 #include "RenderScriptingInterface.h"
1111
12+#include <RenderCommonTask.h>
1213 #include <ScriptEngineCast.h>
1314
1415 #include "LightingModel.h"
@@ -79,14 +80,35 @@ void RenderScriptingInterface::setRenderMethod(RenderMethod renderMethod) { · 64 unmodified lines
7980 emit settingsChanged();
8081 }
8182 }
83+
84+void recursivelyUpdateMirrorRenderMethods(const QString& parentTaskName, int renderMethod, int depth) {
85+ if (depth == RenderMirrorTask::MAX_MIRROR_DEPTH) {
86+ return;
87+ }
88+
89+ for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
90+ std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth) + ".DeferredForwardSwitch";
91+ auto mirrorConfig = dynamic_cast<render::SwitchConfig*>(qApp->getRenderEngine()->getConfiguration()->getConfig(QString::fromStdString(mirrorTaskString)));
92+ if (mirrorConfig) {
93+ mirrorConfig->setBranch((int)renderMethod);
94+ recursivelyUpdateMirrorRenderMethods(QString::fromStdString(mirrorTaskString) + (renderMethod == 1 ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),
95+ renderMethod, depth + 1);
96+ }
97+ }
98+}
99+
82100 void RenderScriptingInterface::forceRenderMethod(RenderMethod renderMethod) {
83101 _renderSettingLock.withWriteLock([&] {
84102 _renderMethod = (int)renderMethod;
85103 _renderMethodSetting.set((int)renderMethod);
86104
87− auto config = dynamic_cast<render::SwitchConfig*>(qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DeferredForwardSwitch"));
105+ QString configName = "RenderMainView.DeferredForwardSwitch";
106+ auto config = dynamic_cast<render::SwitchConfig*>(qApp->getRenderEngine()->getConfiguration()->getConfig(configName));
88107 if (config) {
89108 config->setBranch((int)renderMethod);
109+
110+ recursivelyUpdateMirrorRenderMethods(configName + (renderMethod == RenderMethod::FORWARD ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),
111+ (int)renderMethod, 0);
90112 }
91113 });
92114 }