From 734ce03d72e52bc9ee36141f33edef91f12b24e1 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 15 Dec 2014 20:51:00 +0100 Subject: [PATCH] Changed the deinitialization of renderable from the destructorto the scenegraphnode --- include/openspace/rendering/renderable.h | 2 +- src/rendering/model/renderablemodel.cpp | 1 - src/rendering/planets/renderableplanet.cpp | 6 ++++- src/rendering/renderable.cpp | 3 +-- src/rendering/renderablefieldlines.cpp | 1 - src/rendering/renderablefov.cpp | 1 - src/rendering/renderablepath.cpp | 1 - src/rendering/renderableplane.cpp | 1 - src/rendering/renderablesphericalgrid.cpp | 2 -- src/rendering/renderabletrail.cpp | 1 - src/rendering/renderablevolumegl.cpp | 1 - .../stars/renderableconstellationbounds.cpp | 1 - src/rendering/stars/renderablestars.cpp | 1 - src/scenegraph/scenegraph.cpp | 7 ++++-- src/scenegraph/scenegraphnode.cpp | 25 +++++++++++-------- 15 files changed, 27 insertions(+), 27 deletions(-) diff --git a/include/openspace/rendering/renderable.h b/include/openspace/rendering/renderable.h index b19c501490..ab2b1b6d4d 100644 --- a/include/openspace/rendering/renderable.h +++ b/include/openspace/rendering/renderable.h @@ -75,7 +75,7 @@ protected: private: properties::BoolProperty _enabled; - + PowerScaledScalar boundingSphere_; std::string _relativePath; }; diff --git a/src/rendering/model/renderablemodel.cpp b/src/rendering/model/renderablemodel.cpp index e4506143cc..30aa4b9c55 100644 --- a/src/rendering/model/renderablemodel.cpp +++ b/src/rendering/model/renderablemodel.cpp @@ -86,7 +86,6 @@ RenderableModel::RenderableModel(const ghoul::Dictionary& dictionary) RenderableModel::~RenderableModel(){ - deinitialize(); } bool RenderableModel::isReady() const { diff --git a/src/rendering/planets/renderableplanet.cpp b/src/rendering/planets/renderableplanet.cpp index 231660481f..f78156dd01 100644 --- a/src/rendering/planets/renderableplanet.cpp +++ b/src/rendering/planets/renderableplanet.cpp @@ -84,10 +84,14 @@ RenderablePlanet::RenderablePlanet(const ghoul::Dictionary& dictionary) addProperty(_colorTexturePath); _colorTexturePath.onChange(std::bind(&RenderablePlanet::loadTexture, this)); + + std::string s = _colorTexturePath.description(); + ghoul::Dictionary d; + ghoul::lua::loadDictionaryFromString(s, d); + } RenderablePlanet::~RenderablePlanet() { - deinitialize(); } bool RenderablePlanet::initialize() { diff --git a/src/rendering/renderable.cpp b/src/rendering/renderable.cpp index 2a7269eb3c..258a306203 100644 --- a/src/rendering/renderable.cpp +++ b/src/rendering/renderable.cpp @@ -89,8 +89,7 @@ Renderable::Renderable(const ghoul::Dictionary& dictionary) addProperty(_enabled); } -Renderable::~Renderable() -{ +Renderable::~Renderable() { } void Renderable::setBoundingSphere(const PowerScaledScalar& boundingSphere) diff --git a/src/rendering/renderablefieldlines.cpp b/src/rendering/renderablefieldlines.cpp index 755a78178d..9214b1e48f 100644 --- a/src/rendering/renderablefieldlines.cpp +++ b/src/rendering/renderablefieldlines.cpp @@ -87,7 +87,6 @@ RenderableFieldlines::RenderableFieldlines(const ghoul::Dictionary& dictionary) } RenderableFieldlines::~RenderableFieldlines() { - deinitialize(); } bool RenderableFieldlines::isReady() const { diff --git a/src/rendering/renderablefov.cpp b/src/rendering/renderablefov.cpp index 1b3507ded7..52018218e2 100644 --- a/src/rendering/renderablefov.cpp +++ b/src/rendering/renderablefov.cpp @@ -90,7 +90,6 @@ void RenderableFov::fullYearSweep(){ } RenderableFov::~RenderableFov(){ - deinitialize(); } bool RenderableFov::isReady() const { diff --git a/src/rendering/renderablepath.cpp b/src/rendering/renderablepath.cpp index 9513f9c783..b91e047c79 100644 --- a/src/rendering/renderablepath.cpp +++ b/src/rendering/renderablepath.cpp @@ -142,7 +142,6 @@ bool RenderablePath::fullYearSweep(){ } RenderablePath::~RenderablePath(){ - deinitialize(); } bool RenderablePath::isReady() const { diff --git a/src/rendering/renderableplane.cpp b/src/rendering/renderableplane.cpp index a1b60246ff..853cf9b70f 100644 --- a/src/rendering/renderableplane.cpp +++ b/src/rendering/renderableplane.cpp @@ -95,7 +95,6 @@ RenderablePlane::RenderablePlane(const ghoul::Dictionary& dictionary) } RenderablePlane::~RenderablePlane() { - deinitialize(); } bool RenderablePlane::isReady() const { diff --git a/src/rendering/renderablesphericalgrid.cpp b/src/rendering/renderablesphericalgrid.cpp index 3110cbf8dd..bb0e0c0688 100644 --- a/src/rendering/renderablesphericalgrid.cpp +++ b/src/rendering/renderablesphericalgrid.cpp @@ -128,8 +128,6 @@ RenderableSphericalGrid::RenderableSphericalGrid(const ghoul::Dictionary& dictio } RenderableSphericalGrid::~RenderableSphericalGrid(){ - deinitialize(); - // Delete not done in deinitialize because new is done in constructor delete[] _varray; delete[] _iarray; diff --git a/src/rendering/renderabletrail.cpp b/src/rendering/renderabletrail.cpp index 7c73b06497..a2bc4af6f2 100644 --- a/src/rendering/renderabletrail.cpp +++ b/src/rendering/renderabletrail.cpp @@ -139,7 +139,6 @@ void RenderableTrail::fullYearSweep(){ } RenderableTrail::~RenderableTrail(){ - deinitialize(); } bool RenderableTrail::isReady() const { diff --git a/src/rendering/renderablevolumegl.cpp b/src/rendering/renderablevolumegl.cpp index 2b343d44b3..88484cd473 100644 --- a/src/rendering/renderablevolumegl.cpp +++ b/src/rendering/renderablevolumegl.cpp @@ -160,7 +160,6 @@ RenderableVolumeGL::RenderableVolumeGL(const ghoul::Dictionary& dictionary) } RenderableVolumeGL::~RenderableVolumeGL() { - deinitialize(); } bool RenderableVolumeGL::isReady() const { diff --git a/src/rendering/stars/renderableconstellationbounds.cpp b/src/rendering/stars/renderableconstellationbounds.cpp index 7c0d85bd30..e8e057662f 100644 --- a/src/rendering/stars/renderableconstellationbounds.cpp +++ b/src/rendering/stars/renderableconstellationbounds.cpp @@ -88,7 +88,6 @@ RenderableConstellationBounds::RenderableConstellationBounds( } RenderableConstellationBounds::~RenderableConstellationBounds() { - deinitialize(); } bool RenderableConstellationBounds::initialize() { diff --git a/src/rendering/stars/renderablestars.cpp b/src/rendering/stars/renderablestars.cpp index 35b61f6284..a671d7c161 100644 --- a/src/rendering/stars/renderablestars.cpp +++ b/src/rendering/stars/renderablestars.cpp @@ -123,7 +123,6 @@ RenderableStars::RenderableStars(const ghoul::Dictionary& dictionary) } RenderableStars::~RenderableStars() { - deinitialize(); } bool RenderableStars::isReady() const { diff --git a/src/scenegraph/scenegraph.cpp b/src/scenegraph/scenegraph.cpp index eb181d4913..e0614a6dd9 100644 --- a/src/scenegraph/scenegraph.cpp +++ b/src/scenegraph/scenegraph.cpp @@ -290,8 +290,11 @@ void SceneGraph::scheduleLoadSceneFile(const std::string& sceneDescriptionFilePa void SceneGraph::clearSceneGraph() { // deallocate the scene graph. Recursive deallocation will occur - delete _root; - _root = nullptr; + if (_root) { + _root->deinitialize(); + delete _root; + _root = nullptr; + } _nodes.erase(_nodes.begin(), _nodes.end()); _allNodes.erase(_allNodes.begin(), _allNodes.end()); diff --git a/src/scenegraph/scenegraphnode.cpp b/src/scenegraph/scenegraphnode.cpp index 092dc9ffbb..ac396a503d 100644 --- a/src/scenegraph/scenegraphnode.cpp +++ b/src/scenegraph/scenegraphnode.cpp @@ -140,10 +140,10 @@ SceneGraphNode::~SceneGraphNode() bool SceneGraphNode::initialize() { - if (_renderable != nullptr) + if (_renderable) _renderable->initialize(); - if (_ephemeris != nullptr) + if (_ephemeris) _ephemeris->initialize(); return true; @@ -153,16 +153,21 @@ bool SceneGraphNode::deinitialize() { LDEBUG("Deinitialize: " << name()); - if(_renderable) + if (_renderable) { + _renderable->deinitialize(); delete _renderable; - _renderable = nullptr; - if(_ephemeris) - delete _ephemeris; - _ephemeris = nullptr; + _renderable = nullptr; + } - // deallocate the child nodes and delete them, iterate c++11 style - for (SceneGraphNode* child : _children) - delete child; + if (_ephemeris) { + delete _ephemeris; + _ephemeris = nullptr; + } + + for (SceneGraphNode* child : _children) { + child->deinitialize(); + delete child; + } _children.clear(); // reset variables