eng_graph_visitors.hh

Go to the documentation of this file.
00001 /*
00008  * LEGAL:   COPYRIGHT (C) 2007 JIM E. BROOKS
00009  *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
00010  *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
00011  *****************************************************************************/
00012 
00013 #if ENG_GRAPH_CC || DOXYGEN  // private to Graph class
00014 #ifndef ENG_GRAPH_VISITORS_HH
00015 #define ENG_GRAPH_VISITORS_HH 1
00016 
00017 namespace eng {
00018 
00026 class VisitorCloner : public Visitor
00027 {
00028 public:
00029             VisitorCloner( Graph& graph, const Graph& parentGraph )
00030             : Visitor(graph), mParentGraph(parentGraph) { }
00031             ~VisitorCloner() { }
00032     void    VisitAny( Node& node );
00033     DECLARE_VISIT_ANY( VisitAny )  // expands call to VisitAny() for all Node classes
00034 
00035 private:
00036     const Graph&        mParentGraph;
00037 };
00038 
00043 class VisitorLod : public Visitor
00044 {
00045 public:
00046     VisitorLod( Graph& graph, ObjectLod objectLod )
00047     :   Visitor(graph),
00048         mObjectLod(objectLod)
00049     {
00050     }
00051 
00052     ~VisitorLod() { }
00053 
00054     void Visit( LodNode& lodNode )
00055     {
00056         // Found the LodNode, stop traversing.
00057         Stop();
00058 
00059         // Change LOD.
00060         lodNode.SetLod( mObjectLod );
00061     }
00062 
00063 private:
00064     ObjectLod   mObjectLod;
00065 };
00066 
00067 } // namespace eng
00068 
00069 #endif // ENG_GRAPH_VISITORS_HH
00070 #endif // ENG_GRAPH_CC || DOXYGEN
Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:08 2007