1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#pragma once
#include "irender.h"
#include "iscenegraph.h"
namespace render
{
/// A scenegraph walker that passes nodes to its contained RenderableCollector
class SceneRenderWalker :
public scene::Graph::Walker
{
// The collector which is sorting our renderables
IRenderableCollector& _collector;
// The view we're using for culling
const VolumeTest& _volume;
public:
/// Initialise with a RenderableCollector to populate and a view volume
SceneRenderWalker(IRenderableCollector& collector, const VolumeTest& volume) :
_collector(collector),
_volume(volume)
{}
// scene::Graph::Walker implementation
bool visit(const scene::INodePtr& node) override
{
node->onPreRender(_volume);
return true;
}
};
} // namespace render
|