Pioneer
StaticGeometry.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 _STATICGEOMETRY_H
5 #define _STATICGEOMETRY_H
6 /*
7  * Geometry node containing one or more meshes.
8  */
9 #include "Aabb.h"
10 #include "Node.h"
11 #include "graphics/Renderer.h"
12 #include "graphics/VertexBuffer.h"
13 #include "libs.h"
14 
15 namespace SceneGraph {
16 
17  class NodeVisitor;
18 
19  class StaticGeometry : public Node {
20  public:
21  struct Mesh {
22  // XXX deprecate these fields as they're wrapped in meshObject
27  };
29  StaticGeometry(const StaticGeometry &, NodeCopyCache *cache = 0);
30  virtual Node *Clone(NodeCopyCache *cache = 0) override;
31  virtual const char *GetTypeName() const override { return "StaticGeometry"; }
32  virtual void Accept(NodeVisitor &nv) override;
33  virtual void Render(const matrix4x4f &trans, const RenderData *rd) override;
34  virtual void Render(const std::vector<matrix4x4f> &trans, const RenderData *rd) override;
35 
36  virtual void Save(NodeDatabase &) override;
37  static StaticGeometry *Load(NodeDatabase &);
38 
42  unsigned int GetNumMeshes() const { return static_cast<Uint32>(m_meshes.size()); }
43  Mesh &GetMeshAt(unsigned int i);
44 
46 
47  protected:
49  std::vector<Mesh> m_meshes;
50  std::vector<RefCountedPtr<Graphics::Material>> m_instanceMaterials;
52  };
53 
54 } // namespace SceneGraph
55 #endif
Definition: Renderer.h:44
Definition: NodeCopyCache.h:14
Definition: NodeVisitor.h:26
Definition: Node.h:72
Definition: StaticGeometry.h:19
std::vector< Mesh > m_meshes
Definition: StaticGeometry.h:49
virtual void Save(NodeDatabase &) override
Definition: StaticGeometry.cpp:108
virtual Node * Clone(NodeCopyCache *cache=0) override
Definition: StaticGeometry.cpp:36
~StaticGeometry()
Definition: StaticGeometry.cpp:25
unsigned int GetNumMeshes() const
Definition: StaticGeometry.h:42
static StaticGeometry * Load(NodeDatabase &)
Definition: StaticGeometry.cpp:170
virtual void Render(const matrix4x4f &trans, const RenderData *rd) override
Definition: StaticGeometry.cpp:46
RefCountedPtr< Graphics::InstanceBuffer > m_instBuffer
Definition: StaticGeometry.h:51
virtual void Accept(NodeVisitor &nv) override
Definition: StaticGeometry.cpp:41
StaticGeometry(Graphics::Renderer *r)
Definition: StaticGeometry.cpp:20
Aabb m_boundingBox
Definition: StaticGeometry.h:45
virtual const char * GetTypeName() const override
Definition: StaticGeometry.h:31
Mesh & GetMeshAt(unsigned int i)
Definition: StaticGeometry.cpp:270
void AddMesh(RefCountedPtr< Graphics::VertexBuffer >, RefCountedPtr< Graphics::IndexBuffer >, RefCountedPtr< Graphics::Material >)
Definition: StaticGeometry.cpp:257
std::vector< RefCountedPtr< Graphics::Material > > m_instanceMaterials
Definition: StaticGeometry.h:50
Definition: CityOnPlanet.h:31
Definition: Weld.h:10
Definition: Aabb.h:9
Definition: Node.h:63
Definition: Node.h:44
Definition: StaticGeometry.h:21
RefCountedPtr< Graphics::Material > material
Definition: StaticGeometry.h:26
RefCountedPtr< Graphics::VertexBuffer > vertexBuffer
Definition: StaticGeometry.h:23
RefCountedPtr< Graphics::IndexBuffer > indexBuffer
Definition: StaticGeometry.h:24
RefCountedPtr< Graphics::MeshObject > meshObject
Definition: StaticGeometry.h:25