diff --git a/modules/base/rendering/modelgeometry.cpp b/modules/base/rendering/modelgeometry.cpp index 687f65773d..b51938be98 100644 --- a/modules/base/rendering/modelgeometry.cpp +++ b/modules/base/rendering/modelgeometry.cpp @@ -25,8 +25,10 @@ #include #include +#include #include #include +#include #include #include #include @@ -80,7 +82,8 @@ documentation:: Documentation ModelGeometry::Documentation() { }; } -std::unique_ptr ModelGeometry::createFromDictionary( +// Create with ghoul::mm_unique_ptr +ghoul::mm_unique_ptr ModelGeometry::createFromDictionary( const ghoul::Dictionary& dictionary) { if (!dictionary.hasKeyAndValue(KeyType)) { @@ -90,8 +93,12 @@ std::unique_ptr ModelGeometry::createFromDictionary( const std::string& geometryType = dictionary.value(KeyType); auto factory = FactoryManager::ref().factory(); - ModelGeometry* geometry = factory->create(geometryType, dictionary); - return std::unique_ptr(geometry); + ModelGeometry* geometry = factory->create( + geometryType, + dictionary, + &global::memoryManager.PersistentMemory + ); + return ghoul::mm_unique_ptr(geometry); } ModelGeometry::ModelGeometry(const ghoul::Dictionary& dictionary) { diff --git a/modules/base/rendering/modelgeometry.h b/modules/base/rendering/modelgeometry.h index 5018b07c50..c087d57d7e 100644 --- a/modules/base/rendering/modelgeometry.h +++ b/modules/base/rendering/modelgeometry.h @@ -25,6 +25,7 @@ #ifndef __OPENSPACE_MODULE_BASE___MODELGEOMETRY___H__ #define __OPENSPACE_MODULE_BASE___MODELGEOMETRY___H__ +#include #include #include #include @@ -45,7 +46,7 @@ public: GLfloat normal[3]; }; - static std::unique_ptr createFromDictionary( + static ghoul::mm_unique_ptr createFromDictionary( const ghoul::Dictionary& dictionary ); diff --git a/modules/base/rendering/renderablemodel.cpp b/modules/base/rendering/renderablemodel.cpp index d18e34d12d..e975a74247 100644 --- a/modules/base/rendering/renderablemodel.cpp +++ b/modules/base/rendering/renderablemodel.cpp @@ -301,13 +301,13 @@ void RenderableModel::initializeGL() { ghoul::opengl::updateUniformLocations(*_program, _uniformCache, UniformNames); - for (const std::unique_ptr& geom : _geometry) { + for (const ghoul::mm_unique_ptr& geom : _geometry) { geom->initialize(this); } } void RenderableModel::deinitializeGL() { - for (const std::unique_ptr& geom : _geometry) { + for (const ghoul::mm_unique_ptr& geom : _geometry) { geom->deinitialize(); } _geometry.clear(); @@ -382,22 +382,10 @@ void RenderableModel::render(const RenderData& data, RendererTasks&) { _uniformCache.projectionTransform, data.camera.projectionMatrix() ); - _program->setUniform( - _uniformCache.ambientIntensity, - _ambientIntensity - ); - _program->setUniform( - _uniformCache.diffuseIntensity, - _diffuseIntensity - ); - _program->setUniform( - _uniformCache.specularIntensity, - _specularIntensity - ); - _program->setUniform( - _uniformCache.performShading, - _performShading - ); + _program->setUniform(_uniformCache.ambientIntensity, _ambientIntensity); + _program->setUniform(_uniformCache.diffuseIntensity, _diffuseIntensity); + _program->setUniform(_uniformCache.specularIntensity, _specularIntensity); + _program->setUniform(_uniformCache.performShading, _performShading); if (_disableFaceCulling) { glDisable(GL_CULL_FACE); @@ -406,7 +394,7 @@ void RenderableModel::render(const RenderData& data, RendererTasks&) { ghoul::opengl::TextureUnit unit; unit.activate(); _program->setUniform(_uniformCache.texture, unit); - for (const std::unique_ptr& geom : _geometry) { + for (const ghoul::mm_unique_ptr& geom : _geometry) { geom->setUniforms(*_program); geom->bindTexture(); geom->render(); diff --git a/modules/base/rendering/renderablemodel.h b/modules/base/rendering/renderablemodel.h index 33042fc208..721de33f44 100644 --- a/modules/base/rendering/renderablemodel.h +++ b/modules/base/rendering/renderablemodel.h @@ -27,13 +27,14 @@ #include +#include #include #include #include +#include +#include #include #include -#include -#include namespace ghoul::opengl { class ProgramObject; @@ -66,7 +67,7 @@ public: static documentation::Documentation Documentation(); private: - std::vector> _geometry; + std::vector> _geometry; properties::FloatProperty _ambientIntensity; diff --git a/modules/spacecraftinstruments/rendering/renderablemodelprojection.h b/modules/spacecraftinstruments/rendering/renderablemodelprojection.h index 08c64c6be1..45d5ccf252 100644 --- a/modules/spacecraftinstruments/rendering/renderablemodelprojection.h +++ b/modules/spacecraftinstruments/rendering/renderablemodelprojection.h @@ -31,6 +31,7 @@ #include #include #include +#include #include namespace ghoul::opengl { @@ -83,7 +84,7 @@ private: std::unique_ptr _depthFboProgramObject; UniformCache(ProjectorMatrix, ModelTransform) _depthFboUniformCache; - std::unique_ptr _geometry; + ghoul::mm_unique_ptr _geometry; glm::dmat3 _instrumentMatrix = glm::dmat3(1.0);