Pioneer
MatrixTransform.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 _MATRIXTRANSFORM_H
5 #define _MATRIXTRANSFORM_H
6 
7 #include "Group.h"
8 #include "matrix4x4.h"
9 
10 namespace Graphics {
11  class Renderer;
12 }
13 
14 namespace SceneGraph {
15 
16  /*
17  * Applies a matrix transform to child nodes
18  *
19  * Note: transforms are not automatically serialized when saving to disk;
20  * they are derived from the original model and animations.
21  * If you have programmatically positioned a MatrixTransform, it is your
22  * responsibility to ensure the new position is properly serialized.
23  */
24  class MatrixTransform : public Group {
25  public:
27  MatrixTransform(const MatrixTransform &, NodeCopyCache *cache = 0);
28 
29  virtual Node *Clone(NodeCopyCache *cache = 0) override;
30  virtual const char *GetTypeName() const override { return "MatrixTransform"; }
31  virtual void Accept(NodeVisitor &v) override;
32 
33  virtual void Save(NodeDatabase &) override;
35 
36  virtual void Render(const matrix4x4f &trans, const RenderData *rd) override;
37  virtual void Render(const std::vector<matrix4x4f> &trans, const RenderData *rd) override;
38 
39  const matrix4x4f &GetTransform() const { return m_transform; }
40  void SetTransform(const matrix4x4f &m) { m_transform = m; }
41 
42  protected:
43  virtual ~MatrixTransform() {}
44 
45  private:
46  matrix4x4f m_transform;
47  };
48 } // namespace SceneGraph
49 #endif
Definition: Renderer.h:44
Definition: Group.h:12
Definition: MatrixTransform.h:24
virtual const char * GetTypeName() const override
Definition: MatrixTransform.h:30
virtual void Render(const matrix4x4f &trans, const RenderData *rd) override
Definition: MatrixTransform.cpp:34
virtual void Accept(NodeVisitor &v) override
Definition: MatrixTransform.cpp:29
static MatrixTransform * Load(NodeDatabase &)
Definition: MatrixTransform.cpp:65
virtual void Save(NodeDatabase &) override
Definition: MatrixTransform.cpp:58
virtual Node * Clone(NodeCopyCache *cache=0) override
Definition: MatrixTransform.cpp:24
MatrixTransform(Graphics::Renderer *r, const matrix4x4f &m)
Definition: MatrixTransform.cpp:12
virtual ~MatrixTransform()
Definition: MatrixTransform.h:43
void SetTransform(const matrix4x4f &m)
Definition: MatrixTransform.h:40
const matrix4x4f & GetTransform() const
Definition: MatrixTransform.h:39
Definition: NodeCopyCache.h:14
Definition: NodeVisitor.h:26
Definition: Node.h:72
Definition: Background.h:14
Definition: CityOnPlanet.h:31
Definition: Node.h:63
Definition: Node.h:44