diff --git a/src/Magnum/DebugTools/ForceRenderer.cpp b/src/Magnum/DebugTools/ForceRenderer.cpp index a713fdc70..e46a301ea 100644 --- a/src/Magnum/DebugTools/ForceRenderer.cpp +++ b/src/Magnum/DebugTools/ForceRenderer.cpp @@ -86,6 +86,9 @@ template ForceRenderer::ForceRenderer(SceneG ResourceManager::instance().set(this->mesh.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); } +/* To avoid deleting pointers to incomplete type on destruction of Resource members */ +template ForceRenderer::~ForceRenderer() = default; + template void ForceRenderer::draw(const MatrixTypeFor& transformationMatrix, SceneGraph::AbstractCamera& camera) { shader->setTransformationProjectionMatrix(camera.projectionMatrix()*Implementation::forceRendererTransformation(transformationMatrix.transformPoint(forcePosition), force)*MatrixTypeFor::scaling(VectorTypeFor{options->scale()})) .setColor(options->color()); diff --git a/src/Magnum/DebugTools/ForceRenderer.h b/src/Magnum/DebugTools/ForceRenderer.h index e6db5d56f..3282f575b 100644 --- a/src/Magnum/DebugTools/ForceRenderer.h +++ b/src/Magnum/DebugTools/ForceRenderer.h @@ -125,6 +125,8 @@ template class MAGNUM_DEBUGTOOLS_EXPORT ForceRenderer: p */ ForceRenderer(SceneGraph::AbstractObject&, const VectorTypeFor&, VectorTypeFor&&, ResourceKey = ResourceKey(), SceneGraph::DrawableGroup* = nullptr) = delete; + ~ForceRenderer(); + private: void draw(const MatrixTypeFor& transformationMatrix, SceneGraph::AbstractCamera& camera) override; diff --git a/src/Magnum/DebugTools/ObjectRenderer.cpp b/src/Magnum/DebugTools/ObjectRenderer.cpp index 02e9257f4..d7be15cf6 100644 --- a/src/Magnum/DebugTools/ObjectRenderer.cpp +++ b/src/Magnum/DebugTools/ObjectRenderer.cpp @@ -175,6 +175,9 @@ template ObjectRenderer::ObjectRenderer(Scen ResourceManager::instance().set(this->mesh.key(), mesh, ResourceDataState::Final, ResourcePolicy::Manual); } +/* To avoid deleting pointers to incomplete type on destruction of Resource members */ +template ObjectRenderer::~ObjectRenderer() = default; + template void ObjectRenderer::draw(const MatrixTypeFor& transformationMatrix, SceneGraph::AbstractCamera& camera) { shader->setTransformationProjectionMatrix(camera.projectionMatrix()*transformationMatrix*MatrixTypeFor::scaling(VectorTypeFor{options->size()})); mesh->draw(*shader); diff --git a/src/Magnum/DebugTools/ObjectRenderer.h b/src/Magnum/DebugTools/ObjectRenderer.h index e9d22c906..eaeed85f1 100644 --- a/src/Magnum/DebugTools/ObjectRenderer.h +++ b/src/Magnum/DebugTools/ObjectRenderer.h @@ -97,6 +97,8 @@ template class MAGNUM_DEBUGTOOLS_EXPORT ObjectRenderer: */ explicit ObjectRenderer(SceneGraph::AbstractObject& object, ResourceKey options = ResourceKey(), SceneGraph::DrawableGroup* drawables = nullptr); + ~ObjectRenderer(); + private: void draw(const MatrixTypeFor& transformationMatrix, SceneGraph::AbstractCamera& camera) override;