1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _NODEVISITOR_H
5 #define _NODEVISITOR_H
6 /*
7  * Node visitor using the "double dispatch" model
8  * where the nodes call the appropriate Apply* method
9  *
10  * Start traversal with node->Accept(visitor)!
11  */
12 #include "libs.h"
13 
14 namespace SceneGraph {
15 
16 	class Billboard;
17 	class CollisionGeometry;
18 	class Group;
19 	class Label3D;
20 	class LOD;
21 	class MatrixTransform;
22 	class Node;
23 	class StaticGeometry;
24 	class Thruster;
25 
26 	class NodeVisitor {
27 	public:
~NodeVisitor()28 		virtual ~NodeVisitor() {}
29 		virtual void ApplyNode(Node &);
30 		virtual void ApplyGroup(Group &);
31 		virtual void ApplyStaticGeometry(StaticGeometry &);
32 		virtual void ApplyLabel(Label3D &);
33 		virtual void ApplyMatrixTransform(MatrixTransform &);
34 		virtual void ApplyBillboard(Billboard &);
35 		virtual void ApplyThruster(Thruster &);
36 		virtual void ApplyLOD(LOD &);
37 		virtual void ApplyCollisionGeometry(CollisionGeometry &);
38 	};
39 
40 } // namespace SceneGraph
41 #endif
42