#ifndef Magnum_Physics_Implementation_DebugRenderer_h #define Magnum_Physics_Implementation_DebugRenderer_h /* Copyright © 2010, 2011, 2012 Vladimír Vondruš This file is part of Magnum. Magnum is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 only, as published by the Free Software Foundation. Magnum is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License version 3 for more details. */ #include "ResourceManager.h" #include "SceneGraph/Drawable.h" #include "AbstractDebugRenderer.h" namespace Magnum { class AbstractShaderProgram; class Mesh; namespace Shaders { template class FlatShader; } namespace Physics { namespace Implementation { struct Options; template class DebugRenderer: public SceneGraph::Drawable { public: DebugRenderer(SceneGraph::AbstractObject* object, Resource&& options): SceneGraph::Drawable(object), options(options) {} inline ~DebugRenderer() { for(auto i: renderers) delete i; } inline void addRenderer(AbstractDebugRenderer* renderer) { renderers.push_back(renderer); } inline void draw(const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) override { for(auto i: renderers) i->draw(options, transformationMatrix, camera); } private: Resource options; std::vector*> renderers; }; }}} #endif