Pioneer
Loading...
Searching...
No Matches
Group.h
Go to the documentation of this file.
1// Copyright © 2008-2024 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 "matrix4x4.h"
9#include <vector>
10
11namespace SceneGraph {
12
13 class Group : public Node {
14 public:
16 Group(const Group &, NodeCopyCache *cache = 0);
17 virtual Node *Clone(NodeCopyCache *cache = 0) override;
18 virtual const char *GetTypeName() const override { return "Group"; }
19 virtual void Save(NodeDatabase &) override;
20 static Group *Load(NodeDatabase &);
21
22 virtual void AddChild(Node *child);
23 virtual bool RemoveChild(Node *node); //true on success
24 virtual bool RemoveChildAt(unsigned int position); //true on success
25 unsigned int GetNumChildren() const { return static_cast<Uint32>(m_children.size()); }
26 Node *GetChildAt(unsigned int);
27 virtual void Accept(NodeVisitor &v) override;
28 virtual void Traverse(NodeVisitor &v) override;
29 virtual void Render(const matrix4x4f &trans, const RenderData *rd) override;
30 virtual void Render(const std::vector<matrix4x4f> &trans, const RenderData *rd) override;
31 virtual Node *FindNode(const std::string &) override;
32
33 // Walk the node hierarchy to the root of the model and compute the global transform of this node.
34 // The result of this *should* be cached if the model has not changed
35 virtual matrix4x4f CalcGlobalTransform() const;
36
37 protected:
38 virtual ~Group();
39 virtual void RenderChildren(const matrix4x4f &trans, const RenderData *rd);
40 virtual void RenderChildren(const std::vector<matrix4x4f> &trans, const RenderData *rd);
41 std::vector<Node *> m_children;
42 };
43
44} // namespace SceneGraph
45
46#endif
Definition: Renderer.h:45
Definition: Group.h:13
virtual void AddChild(Node *child)
Definition: Group.cpp:53
virtual const char * GetTypeName() const override
Definition: Group.h:18
virtual ~Group()
Definition: Group.cpp:18
virtual bool RemoveChild(Node *node)
Definition: Group.cpp:60
virtual matrix4x4f CalcGlobalTransform() const
Definition: Group.cpp:105
virtual void RenderChildren(const matrix4x4f &trans, const RenderData *rd)
Definition: Group.cpp:127
virtual bool RemoveChildAt(unsigned int position)
Definition: Group.cpp:76
static Group * Load(NodeDatabase &)
Definition: Group.cpp:47
Node * GetChildAt(unsigned int)
Definition: Group.cpp:86
virtual void Traverse(NodeVisitor &v) override
Definition: Group.cpp:115
virtual void Render(const matrix4x4f &trans, const RenderData *rd) override
Definition: Group.cpp:122
virtual void Save(NodeDatabase &) override
Definition: Group.cpp:41
unsigned int GetNumChildren() const
Definition: Group.h:25
virtual void Accept(NodeVisitor &v) override
Definition: Group.cpp:110
std::vector< Node * > m_children
Definition: Group.h:41
virtual Node * FindNode(const std::string &) override
Definition: Group.cpp:91
virtual Node * Clone(NodeCopyCache *cache=0) override
Definition: Group.cpp:36
Definition: NodeCopyCache.h:14
Definition: NodeVisitor.h:25
Definition: Node.h:75
Definition: CityOnPlanet.h:32
Definition: Node.h:66
Definition: Node.h:47