
#ifndef __WFX_SCENE_SCENEGRAPHPRINTER_H__
#define __WFX_SCENE_SCENEGRAPHPRINTER_H__

#include <WFX/WFXIncludes.h>
#include <WFX/scene/SceneGraphVisitor.h>

namespace WFX {

    namespace scene {

        /**
         * pretty-prints the SceneGraph
         */
        class SceneGraphPrinter : public SceneGraphVisitor {
            public:
                /** Ctor */
                SceneGraphPrinter(std::ostream* output = &std::cout);
                virtual ~SceneGraphPrinter() {}

                /** visits a Node */
                void visitNode(Node& n);
                /** visits a TriMesh */
                void visitTriMesh(TriMesh& m);
                /** visits an OctreeNode */
                void visitOctreeNode(OctreeNode& o);

            protected:
            
            private:
                /** output stream */
                std::ostream* Output;
                /** current indent level */
                UInt CurrentIndent;

        };

    }

}


#endif //include guard


