diff --git a/src/interface/commandline/main.cpp b/src/interface/commandline/main.cpp index 7cb35de..7829376 100644 --- a/src/interface/commandline/main.cpp +++ b/src/interface/commandline/main.cpp @@ -203,9 +203,8 @@ int main(int argc, char** argv) Vector3 step = {conf_camera_step_x, conf_camera_step_y, conf_camera_step_z}; camera->setLocation(camera->getLocation().add(step)); - renderer = new SoftwareCanvasRenderer(); + renderer = new SoftwareCanvasRenderer(scenery); renderer->setConfig(conf_render_params); - renderer->setScenery(scenery); if (outputcount >= conf_first_picture) { diff --git a/src/interface/modeler/quickapp/MainModelerWindow.cpp b/src/interface/modeler/quickapp/MainModelerWindow.cpp index b5db284..320ad45 100644 --- a/src/interface/modeler/quickapp/MainModelerWindow.cpp +++ b/src/interface/modeler/quickapp/MainModelerWindow.cpp @@ -17,12 +17,12 @@ MainModelerWindow::MainModelerWindow() { - Scenery scenery; - scenery.autoPreset(); + scenery = new Scenery(); + scenery->autoPreset(); - Logs::debug() << "Initialized scenery:\n" << scenery.toString() << std::endl; + Logs::debug() << "Initialized scenery:\n" << scenery->toString() << std::endl; - renderer = new OpenGLRenderer(&scenery); + renderer = new OpenGLRenderer(scenery); render_preview_provider = new RenderPreviewProvider(); @@ -77,11 +77,6 @@ void MainModelerWindow::setState(const QString &stateName) rootObject()->setProperty("state", stateName); } -Scenery *MainModelerWindow::getScenery() const -{ - return renderer->getScenery(); -} - void MainModelerWindow::keyReleaseEvent(QKeyEvent *event) { if (getState() == "Render Dialog") diff --git a/src/interface/modeler/quickapp/MainModelerWindow.h b/src/interface/modeler/quickapp/MainModelerWindow.h index 0f55752..a48cf26 100644 --- a/src/interface/modeler/quickapp/MainModelerWindow.h +++ b/src/interface/modeler/quickapp/MainModelerWindow.h @@ -21,7 +21,7 @@ public: QString getState() const; void setState(const QString &stateName); - Scenery *getScenery() const; + inline Scenery *getScenery() const {return scenery;} inline OpenGLRenderer *getRenderer() const {return renderer;} inline ModelerCameras *getCamera() const {return cameras;} @@ -29,6 +29,7 @@ protected: virtual void keyReleaseEvent(QKeyEvent *event) override; private: + Scenery *scenery; OpenGLRenderer *renderer; AtmosphereModeler *atmosphere; diff --git a/src/interface/modeler/quickapp/RenderProcess.cpp b/src/interface/modeler/quickapp/RenderProcess.cpp index f466a16..2dcc0d1 100644 --- a/src/interface/modeler/quickapp/RenderProcess.cpp +++ b/src/interface/modeler/quickapp/RenderProcess.cpp @@ -76,8 +76,7 @@ void RenderProcess::startRender(Scenery *scenery, const RenderConfig &config) delete renderer; } - renderer = new SoftwareCanvasRenderer(); - renderer->setScenery(scenery); + renderer = new SoftwareCanvasRenderer(scenery); renderer->setConfig(config); destination->setCanvas(renderer->getCanvas()); diff --git a/src/render/opengl/OpenGLRenderer.h b/src/render/opengl/OpenGLRenderer.h index fcd2f26..bbcb3e0 100644 --- a/src/render/opengl/OpenGLRenderer.h +++ b/src/render/opengl/OpenGLRenderer.h @@ -14,7 +14,7 @@ namespace opengl { class OPENGLSHARED_EXPORT OpenGLRenderer: public SoftwareRenderer { public: - OpenGLRenderer(Scenery* scenery=0); + OpenGLRenderer(Scenery* scenery); virtual ~OpenGLRenderer(); inline OpenGLSkybox *getSkybox() const {return skybox;} diff --git a/src/render/software/SoftwareCanvasRenderer.cpp b/src/render/software/SoftwareCanvasRenderer.cpp index edc48d0..2a04bb0 100644 --- a/src/render/software/SoftwareCanvasRenderer.cpp +++ b/src/render/software/SoftwareCanvasRenderer.cpp @@ -14,7 +14,8 @@ #include "ColorProfile.h" #include "CanvasPreview.h" -SoftwareCanvasRenderer::SoftwareCanvasRenderer() +SoftwareCanvasRenderer::SoftwareCanvasRenderer(Scenery *scenery): + SoftwareRenderer(scenery) { started = false; finished = false; diff --git a/src/render/software/SoftwareCanvasRenderer.h b/src/render/software/SoftwareCanvasRenderer.h index 605a138..df9d339 100644 --- a/src/render/software/SoftwareCanvasRenderer.h +++ b/src/render/software/SoftwareCanvasRenderer.h @@ -19,7 +19,7 @@ namespace software { class SOFTWARESHARED_EXPORT SoftwareCanvasRenderer: public SoftwareRenderer { public: - SoftwareCanvasRenderer(); + SoftwareCanvasRenderer(Scenery *scenery); virtual ~SoftwareCanvasRenderer(); inline const Canvas *getCanvas() const {return canvas;} diff --git a/src/render/software/SoftwareRenderer.cpp b/src/render/software/SoftwareRenderer.cpp index 3dd6a01..b1f6b00 100644 --- a/src/render/software/SoftwareRenderer.cpp +++ b/src/render/software/SoftwareRenderer.cpp @@ -20,14 +20,9 @@ #include "System.h" #include "Thread.h" -SoftwareRenderer::SoftwareRenderer(Scenery* scenery) +SoftwareRenderer::SoftwareRenderer(Scenery* scenery): + scenery(scenery) { - this->scenery = new Scenery; - if (scenery) - { - scenery->copy(this->scenery); - } - render_quality = 5; render_camera = new CameraDefinition; @@ -61,13 +56,6 @@ SoftwareRenderer::~SoftwareRenderer() delete terrain_renderer; delete textures_renderer; delete water_renderer; - - delete scenery; -} - -void SoftwareRenderer::setScenery(Scenery* scenery) -{ - scenery->copy(this->scenery); } void SoftwareRenderer::prepare() diff --git a/src/render/software/SoftwareRenderer.h b/src/render/software/SoftwareRenderer.h index b1d8fa9..739e4d5 100644 --- a/src/render/software/SoftwareRenderer.h +++ b/src/render/software/SoftwareRenderer.h @@ -15,7 +15,7 @@ class SOFTWARESHARED_EXPORT SoftwareRenderer { public: - SoftwareRenderer(Scenery* scenery=0); + SoftwareRenderer(Scenery* scenery); virtual ~SoftwareRenderer(); /* Render base configuration */ @@ -30,13 +30,6 @@ public: virtual Vector3 projectPoint(const Vector3 &point); virtual Vector3 unprojectPoint(const Vector3 &point); - /*! - * \brief Set the scenery to render. - * - * Don't call this after rendering has already started. - */ - virtual void setScenery(Scenery* scenery); - /*! * \brief Prepare the renderer sub-systems. * diff --git a/src/tests/FluidMediumManager_Test.cpp b/src/tests/FluidMediumManager_Test.cpp index 3bae97f..a2e7694 100644 --- a/src/tests/FluidMediumManager_Test.cpp +++ b/src/tests/FluidMediumManager_Test.cpp @@ -11,15 +11,18 @@ class FluidMediumManager_Test:public BaseTestCase protected: virtual void setUp() { - renderer = new SoftwareRenderer(); + scenery = new Scenery(); + renderer = new SoftwareRenderer(scenery); } virtual void tearDown() { delete renderer; + delete scenery; } - SoftwareRenderer* renderer; + Scenery *scenery; + SoftwareRenderer *renderer; };