Pioneer
Group.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _SCENEGRAPH_GROUP_H
5 #define _SCENEGRAPH_GROUP_H
6 
7 #include "Node.h"
8 #include <vector>
9 
10 namespace SceneGraph {
11 
12  class Group : public Node {
13  public:
15  Group(const Group &, NodeCopyCache *cache = 0);
16  virtual Node *Clone(NodeCopyCache *cache = 0) override;
17  virtual const char *GetTypeName() const override { return "Group"; }
18  virtual void Save(NodeDatabase &) override;
19  static Group *Load(NodeDatabase &);
20 
21  virtual void AddChild(Node *child);
22  virtual bool RemoveChild(Node *node); //true on success
23  virtual bool RemoveChildAt(unsigned int position); //true on success
24  unsigned int GetNumChildren() const { return static_cast<Uint32>(m_children.size()); }
25  Node *GetChildAt(unsigned int);
26  virtual void Accept(NodeVisitor &v) override;
27  virtual void Traverse(NodeVisitor &v) override;
28  virtual void Render(const matrix4x4f &trans, const RenderData *rd) override;
29  virtual void Render(const std::vector<matrix4x4f> &trans, const RenderData *rd) override;
30  virtual Node *FindNode(const std::string &) override;
31 
32  protected:
33  virtual ~Group();
34  virtual void RenderChildren(const matrix4x4f &trans, const RenderData *rd);
35  virtual void RenderChildren(const std::vector<matrix4x4f> &trans, const RenderData *rd);
36  std::vector<Node *> m_children;
37  };
38 
39 } // namespace SceneGraph
40 
41 #endif
Definition: Renderer.h:44
Definition: Group.h:12
virtual void AddChild(Node *child)
Definition: Group.cpp:52
virtual ~Group()
Definition: Group.cpp:17
virtual bool RemoveChild(Node *node)
Definition: Group.cpp:58
virtual const char * GetTypeName() const override
Definition: Group.h:17
virtual void RenderChildren(const matrix4x4f &trans, const RenderData *rd)
Definition: Group.cpp:118
virtual bool RemoveChildAt(unsigned int position)
Definition: Group.cpp:73
static Group * Load(NodeDatabase &)
Definition: Group.cpp:46
Node * GetChildAt(unsigned int)
Definition: Group.cpp:82
virtual void Traverse(NodeVisitor &v) override
Definition: Group.cpp:106
virtual void Render(const matrix4x4f &trans, const RenderData *rd) override
Definition: Group.cpp:113
virtual void Save(NodeDatabase &) override
Definition: Group.cpp:40
unsigned int GetNumChildren() const
Definition: Group.h:24
virtual void Accept(NodeVisitor &v) override
Definition: Group.cpp:101
std::vector< Node * > m_children
Definition: Group.h:36
virtual Node * FindNode(const std::string &) override
Definition: Group.cpp:87
virtual Node * Clone(NodeCopyCache *cache=0) override
Definition: Group.cpp:35
Group(Graphics::Renderer *r)
Definition: Group.cpp:12
Definition: NodeCopyCache.h:14
Definition: NodeVisitor.h:26
Definition: Node.h:72
Definition: CityOnPlanet.h:31
Definition: Node.h:63
Definition: Node.h:44