Pioneer
Loading...
Searching...
No Matches
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
10namespace 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 const char * GetTypeName() const override
Definition Group.h:17
virtual ~Group()
Definition Group.cpp:17
virtual bool RemoveChild(Node *node)
Definition Group.cpp:58
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
Definition NodeCopyCache.h:14
Definition NodeVisitor.h:26
Definition Node.h:72
Definition CityOnPlanet.h:31
Definition Node.h:63
Definition Node.h:44