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